![](/img/trans.png)
[英]How to Serialize and Deserialize a Dictionary Containing Gameobject and a Vector2 in Unity
[英]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.