こんにちは、ナレコム前川です。
今回は、Amazon Sumerian の公式チュートリアルの
HTML Component Interaction を進めていきたいと思います。
ここで学ぶことは、
・スクリプトの追加について
・HTML について
・Pick について
・SumerianRunner について
の4つです。
それでは、進めていきましょう。
1. シーンの作成
はじめにシーンを作成し、環境を整えていきましょう。
① ダッシュボードからDefault Lighting を選択。
② シーン名を「HTML Component Interaction」にし、作成。
③ Create Entity から HTML</> を追加。
④ Script のエディタを開き、以下のコードと置き換える。
1 2 3 |
<p style="background: white; font-size: 18px; padding: 4px; margin: 0;"> You have selected: <span id='selected'>Nothing</span> </p> |
※ span 要素の id を確認してください。
これによって、Entity を選択した際に Entity の名前を呼び出せるようになります。
2. Script の作成
ここでは、Script の作成を行っていきます。
① Create Entity から Sphere, Box, Cone, Cylinder を追加。
※ 追加したら4つのEntityが見えるように配置を行ってください。
② HTML Entityを選択し、Add Component -> Script -> Custom Script の順で追加。
③ Script のエディタを開き、以下のコードと置き換える。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
var setup = function(args, ctx){ // Get the span element from the HTML entity var spanElement = document.getElementById('selected'); // Create a click handler function ctx.handleClick = function(event){ var x = event.offsetX; var y = event.offsetY; ctx.world.sumerianRunner.pick(x, y, function(index, depth){ if(index !== -1){ var entity = ctx.world.entityManager.getEntityByIndex(index); spanElement.innerHTML = entity.name; } else { spanElement.innerHTML = 'Nothing'; } }); }; // Attach the click handler ctx.domElement.addEventListener('click', ctx.handleClick); } var cleanup = function(args, ctx){ // Remove the click handler ctx.domElement.removeEventListener('click', ctx.handleClick); } |
このScript は、はじめにHTML Entity から選択された要素を取得します。
その後、handleClick 関数を作成し、キャンバス内の Click イベントにその関数を追加します。
3. Script を理解する
ここでは、先程作成した Script の解説を行っていきます。
まず、ユーザーがキャンバス内のEntityをクリックすると、ctx.handleClick が呼ばれます。
この動作によって、Sumerian が先程のコードを実行していきます。
実行するにあたって、以下のようなことを行います。
① world.sumerianRunner.pick 関数を呼び、マウスの位置を渡し、callback 関数を呼び出す。
② callback 関数の中では、Entity がクリック動作でヒットしたかをエンジンが判断する。
③ Entity がヒットした場合は、innerHTML が選択された Entity 名を表示させるような処理を行う。
※ 何もヒットしなかった場合は、Nothing と表示されます。
それでは、実行して動作を確認してみてください。
今回のチュートリアルは以上です。
お疲れ様でした。