- シーンに「 Player 」というオブジェクトがあります。
- 「 Trees 」と呼ばれる複数のオブジェクトもあります。
ここで、ユーザーが「ツリー」をクリックするたびに、「プレーヤー」がゆっくりとその位置に移動するようにしたいと考えています (Lerp または moveTowards を使用)。
このコードには 2 つの問題があります。
このコードを汎用にしたい
木のオブジェクトをクリックするたびに、プレーヤーをその木に向かって移動させたいと思います。このスクリプトを作成して、各ツリー オブジェクトにアタッチしたくありません。
スクリプトはどこに置くべきですか?
現在、このコードをすべてのツリー オブジェクトに添付しています。
シーン内のすべての木のオブジェクトに適用するには、どのように書き留めればよいですか?
移動中にもう一度クリックすると、前の移動をキャンセルして新しい位置への移動を開始します
- プレイヤーがクリックされた別のオブジェクトに向かって移動しているときに別のオブジェクトをクリックすると、プレイヤーは以前の位置への移動を停止し、新しいポイントへの移動を開始するようにするにはどうすればよいですか 。
新しい UnityScript に順応するのに苦労しています。私は厳密にJavascriptのバックグラウンドから来ており、そのうちの2つは非常に異なるセマンティクスを持つ言語のようです。したがって、誰かがコードでこれに答えた場合(これは私が望むものです:))、詳細なコメントもいただければ幸いです。
私は現在これを行います:
var playerIsMoving = false;
Public playerObject: Gameobject; //I drag in the editor the player in this public var
function update(){
var thisTreePosition = transform.point; //this store the X pos of the tree
var playerPosition = player.transform.point;
if(playerIsMoving){
player.transform.position = Vector2.MoveTowards(playerPosition, thisTreePosition, step);
}
}
function OnMouseDown(){
playerIsMoving = true;
}
私は Unity を持っていない自宅からこれを書いており、コードの構文を忘れていたので、上記のコードにはタイプミスや問題があると予想されます。