teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

別の方法を追加

2021/10/07 04:14

投稿

YOshim
YOshim

スコア1094

answer CHANGED
@@ -1,6 +1,10 @@
1
- Unityでは、オブジェクトを移動させる際は一般的に`transform.translate`を使用します。
1
+ オブジェクトを移動させる方法として色々ありますが、`transform.translate`が比較的一般的です。
2
2
  キーを押し目的地を決めてその後一定スピードでそこに移動させたいなら以下のような方法があります。
3
-
4
3
  1. 目的地の座標と現在の座標の差分をとり、何フレームで移動したいかを決めて、1フレーム当たりの移動量を算出し、transform.translateで規定のフレーム数だけ移動させる
5
4
 
6
- 2. 移動量をあらかじめ決めておき、目的地の座標と現在の座標からベクトルを求め、1フレーム当たりのx,y,z座標の移動量を算出し、transform.translateで移動させ、目的地の一定範囲に到着したら移動を止める
5
+ 2. 移動量をあらかじめ決めておき、目的地の座標と現在の座標からベクトルを求め、1フレーム当たりのx,y,z座標の移動量を算出し、transform.translateで移動させ、目的地の一定範囲に到着したら移動を止める
6
+
7
+ 他にも、transform.positionを使うならMoveTowardsを使用すると以下のような記述で一定速度で目的地まで進みます。
8
+ ```
9
+ transform.position = Vector3.MoveTowards(transform.position, targetPosition, Time.deltaTime);
10
+ ```