var missile : GameObject;
function Update () {
if (Input.GetMouseButtonDown (0))
{
var position : Vector3 = new Vector3(0, -0.2, 1) * 10.0;
position = transform.TransformPoint (position);
var thisMissile : GameObject = Instantiate (missile, position, transform.rotation) as GameObject;
Physics.IgnoreCollision(thisMissile.collider, collider);
}
}
var missile : GameObject;にクローンを生成したいミサイルを登録する登録方法は下図のようにミサイルプレハブをスクリプトの上にドラッグ&ドロップするだけ。
var position : Vector3 = new Vector3(0, -0.2, 1) * 10.0;
position = transform.TransformPoint (position);
はミサイルが発生する地点を設定している。TransformPointメソッドは引数で渡された座標をローカル座標からワールド座標に変換する。この例の場合では、ミサイルの発射元であるキャラクターを原点とした座標からO(0,0,0)を原点とした絶対座標に変換した座標の値を取得する。これは、これから生成されるミサイルオブジェクトはキャラクターの子オブジェクトではなく、ヒエラルキーのルート直下に置かれるため。
var thisMissile : GameObject = Instantiate (missile, position, transform.rotation) as GameObject;
Instantiateメソッドでミサイルオブジェクトのクローンを生成する。Instantiateメソッドの第一引数がクローンの元になるオブジェクト、第二引数が生成されたクローンが配置される座標、第三引数がクローンが生成された時に向いている向き。as GameObjectは不明。このキャストっぽい構文がJavaScriptのキャストの仕方?
// スマートフォンのようなマルチタッチ入力
for (var event : Touch in Input.touches)
{
if (event.phase == TouchPhase.Moved)
{
// Do something
}
}
// 加速度センサー
var accelerator : Vector3 = Input.acceleration;
var x : float = accelerator.x;
var y : float = accelerator.y;
var z : float = accelerator.z;
1,Unityの入力の受け取り方
普通のGUIプログラミングだと入力処理は単一のメソッド・関数から行う。例えば、Androidだとこんな感じ。
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// do something for Player
// do something for NPC
break;
case MotionEvent.ACTION_UP:
// do something for Player
// do something for NPC
break;
case MotionEvent.ACTION_MOVE:
// do something for Player
// do something for NPC
break;
}