メインコンテンツまでスキップ

<pc-entity>

<pc-entity>タグはエンティティを定義するために使用されます。

使用法

属性

属性タイプデフォルト説明
enabledBoolean"true"エンティティの有効状態
nameString-エンティティの名前識別子
positionVector3"0 0 0"「X Y Z」値としてのローカル空間位置
rotationVector3"0 0 0"度単位の「X Y Z」オイラー角としてのローカル空間回転
scaleVector3"1 1 1"「X Y Z」値としてのローカル空間スケール
tagsString-コンマ区切りのタグのリスト

イベント

これらのイベントは、addEventListener()を使用するか、このインターフェースのoneventnameプロパティにイベントリスナーを割り当てることでリッスンできます。

イベント説明
pointerdownポインターがエンティティ上で押下されたときに発生します。
pointerenterポインターがエンティティに入ったときに発生します。
pointerleaveポインターがエンティティを離れたときに発生します。
pointermoveポインターがエンティティ上で移動したときに発生します。
pointerupポインターがエンティティから解放されたときに発生します。

これらのイベントは、インラインの onpointer* 属性を使って宣言的に処理することもできます。これらは標準のインラインイベントハンドラーであり、ブラウザ自身によってコンパイル・実行されるため、任意のHTML要素の onclick とまったく同じように動作します。属性を(実行時であっても)設定すると以前のハンドラーが置き換えられ、削除するとハンドラーが削除されます。ハンドラー内では、this<pc-entity> 要素であり、event はディスパッチされたイベントです。

<pc-entity name="cube"
onpointerenter="this.entity.script.tweener.play(0)"
onpointerleave="this.entity.script.tweener.play(1)"
onpointerdown="this.entity.script.tweener.play(2)">
<pc-render type="box"></pc-render>
</pc-entity>

エンティティのトランスフォームは階層を通じて合成されます。小さいキューブは大きいキューブのなので、大きいキューブにポインタを乗せると両方が一緒に動きます。親の rotationscale、インラインの onpointer* ハンドラを編集してみましょう:

ライブサンプル
<pc-app>
<pc-scene>
<pc-entity name="camera" position="0 1 4">
<pc-camera clear-color="#1d1f2b"></pc-camera>
</pc-entity>
<pc-entity name="light" rotation="45 30 0">
<pc-light></pc-light>
</pc-entity>
<pc-entity name="parent" rotation="0 30 0" tags="interactive"
onpointerenter="this.entity.setLocalPosition(0, 0.25, 0)"
onpointerleave="this.entity.setLocalPosition(0, 0, 0)">
<pc-render type="box"></pc-render>
<pc-entity name="child" position="0.75 0.75 0" scale="0.5 0.5 0.5">
<pc-render type="box"></pc-render>
</pc-entity>
</pc-entity>
</pc-scene>
</pc-app>

JavaScriptインターフェース

EntityElement APIを使用して、<pc-entity>要素をプログラムで作成および操作できます。