1. ホーム
  2. c#

[解決済み] vector3.MoveTowardsでオブジェクトを移動させる

2022-02-25 14:39:27

質問

Unityでゲームアプリを制作しています。GameObjectを移動させるときに問題があります。

私のゲームでは、プレイヤーがデバイスを上にスワイプすると、GameObjectはA点からB点に移動し、下にスワイプすると、B点からA点に移動します。

ゲームロジックをC#スクリプトで書いたのですが、この時に問題が発生しました。

問題は、GameObjectがAからBへ瞬時に移動することです。

以下は、私がGameObjectを移動させるために使用しているコードです。

transform.localPosition = Vector3.MoveTowards (PositionA,PositionB,Time.deltaTime * speed);

speed は10.0fの値を持つfloatです。

GameObjectをA地点からB地点までゆっくり移動させたいのですが、speedの値を変えても何も変わらず、瞬時に移動してしまいます。

どうすれば直るのでしょうか?(私は Vector3.Lerp と表示され、同じ結果になりました)。

解決方法は?

Vector3.MoveTowards は現在位置、目標位置、ステップを取りますが、ここでの第一引数は現在位置ではなく、移動の原点であるように思えます。通常であれば、このように Update() :

transform.localPosition = Vector3.MoveTowards (transform.localPosition, PositionB, Time.deltaTime * speed);

を、現在の位置を第一引数として与えます。