ちびのはてな

「ちび(猫)」と「キノコ」から生まれた「ちびキノコ」。ドラゴンボール最強!純粋なサイヤ人のように生きたいと思っているモノ作りを楽しむ人です。IT技術で少しでも多くの人が笑顔になってくれたらいいなと。

「PlayCanvas 3D チュートリアル」で学んだこと

はじめに

playcanvasjp.connpass.com

これに参加して、Unity 同様メモしたやつ。
Unity も全然使えないからむずかしい。。。

参考サイト

https://support.playcanvas.jp/hc/ja/articles/224172247

PlayCanvas のビューについて

Unity と一緒。すんなりイメージできた。

シーンビュー

カメラやスプライトを配置する画面

ヒエラルキービュー

カメラやスプライトの階層画面

プロジェクトビュー

プロジェクト画面 各種 IDE でもよく見るやつ

インスペクタービュー

カメラやスプライトの属性を設定する画面 Xcode でよく使うやつ

スクリプトについて

initialize , update , swap というライフサイクル関数重要

  • initialize: 初回に呼ばれるやつ
  • update: 毎フレーム呼ばれるやつ
  • swap: ホッとリローディング時に呼ばれるやつ

モデルについて

オブジェクトと同義なのかな? 物体のこと? エンティティとも言えるのかな?(エンティティはモデルの属性かな?) モデルを作成してマテリアルで色を付ける。

Attribute について

スクリプトに属性を付与することができる

var Shot = pc.createScript('shot');
Shot.attributes.add("bulletTemplate",{type:"entity"});

こんな感じ

テンプレートについて

Unity でいうところのプレハブ Template として定義しておくことでクローンを作成できる。

上記のように Entity タイプの Attribute を宣言したら、 該当ソースコードをアタッチしている物体を選択して Entity にモデルを設定する。 これで、モデルをたくさんクローンすることができる。

Number タイプの Attribute を宣言した場合は、大きさ等のデータを入れられるようになるということ。

Collision

当たり判定のこと。 タイプによって当たり判定枠が変わる。

this.entity.collision.on("collisionstart", this.death, this);

で当たり判定定義をスタートする。 this.death はコールバック関数。

Rigid Body

物体に対して物理演算を付けることができる。 https://developer.playcanvas.com/ja/tutorials/collision-and-triggers/

  • Static: エンティティを固定し、動かなくします。
  • Dynamic: エンティティは重力と外部から与えられた力に影響されて動くようになります。
  • Kinematic: エンティティは力に反応しなくなりますが、位置と速度を直接指定して動かすことができるようになります。

ということらしい。

Enemy.prototype.death = function(result) {
  if(result && result.other.rigidbody && result.other.name === "clone") {
    //衝突したコリジョンを持った相手の名前が"clone"だったら
    this.entity.destroy();//自分自身をdestroy
    result.other.destroy();//衝突した相手をdestroy
  }
};

衝突したときに、衝突対象の名前を見て破壊する。 clone は、Template のクローンに付けた名前である。

マテリアルについて

モデルに対する素材になるものである。

  • テクスチャを貼ることができる
  • 色を設定することができる
  • マテリアルはモデルにアタッチすることで反映する