如何移动GameObject以在Unity中使用Vector2?

时间:2018-02-04 19:52:17

标签: c# unity3d

我想在Unity中移动一个GameObject。我想把它移动一个固定的距离。我尝试过使用AddForce,但游戏对象一直在无限移动。

这是我的代码:

Vector2 movementMonster = new Vector2(-4, 0);
rbMonster1.AddForce(movementMonster);

我也尝试过没有任何结果的翻译:

monster1.transform.Translate(Vector2.left * 5 * Time.deltaTime);

2 个答案:

答案 0 :(得分:1)

.Translate需要Vector3:

Vector3 movementMonster = new Vector3(-4, 0, 0);

你想在一个帧中移动一个固定的距离吗?

monster1.transform.Translate(movementMonster);

或超过一定时间(例如一秒钟)?

monster1.transform.Translate(movementMonster * Time.deltaTime);

答案 1 :(得分:1)

每次调用时,Transform.Translate(movementMonster)都会通过定义的Vector3移动怪物移动你的GameObject。 例如:

如果是Vector3(0,0)

,我们假设怪物的起始位置
monster1.transform.Translate(movementMonster);

第一次打电话给你的怪物现在是Vector3(-4,0,0)

monster1.transform.Translate(movementMonster);

第一次打电话给你的怪物后现在是Vector3(-8,0,0)

monster1.transform.Translate(movementMonster);

Vector3(-12,0,0)等..

只要我明白你需要随着时间的推移将'怪物'移动到某个位置。您可以使用Vector3.MoveTowards()的方法,以便跳过一些数学运算。

using UnityEngine;

class Monster : MonoBehaviour {
    public Vector3 endPosition;
    public float speed = 1f; // The monster will move a one unity per second
        public void Update(){
        float step = speed * Time.deltaTime;
        transform.position = Vector3.MoveTowards(transform.position, endPosition, step);
    }

您可能想要点击Unity3D教程页面,其中介绍了这种基础知识。 https://unity3d.com/learn/tutorials/s/scripting