繁体   English   中英

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

[英]How to move a GameObject for using a Vector2 in Unity?

我有一个要在Unity中移动的GameObject。 我想将其移动固定距离。 我曾尝试使用AddForce,但游戏对象一直在无限移动。

这是我的代码:

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

我也尝试了Translate,但没有任何结果:

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

.Translate需要一个Vector3:

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

您是否要在单帧中将其移动固定距离?

monster1.transform.Translate(movementMonster);

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

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

每次调用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM