C# 移动到旋转方向[2D][Unity]
我有一只羊正朝着随机的方向旋转。问题是如何使它一直沿旋转方向移动(旋转每5秒改变一次)。 这是我的密码:C# 移动到旋转方向[2D][Unity],c#,unity3d,C#,Unity3d,我有一只羊正朝着随机的方向旋转。问题是如何使它一直沿旋转方向移动(旋转每5秒改变一次)。 这是我的密码: using UnityEngine; public class Sheep : MonoBehaviour { private float SheepMovementSpeed = 30f; void Start() { InvokeRepeating("SheepRandomRotate", Random.Range(3f, 4.9f), 5f);
using UnityEngine;
public class Sheep : MonoBehaviour
{
private float SheepMovementSpeed = 30f;
void Start()
{
InvokeRepeating("SheepRandomRotate", Random.Range(3f, 4.9f), 5f);
}
void Update()
{
}
public void SheepRandomRotate ()
{
var dir = new Vector2(Random.Range(-10, 10), Random.Range(-10, 10));
var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle + 90, Vector3.forward);
}
}
有什么想法吗?使用与旋转时相同的矢量3.forward
transform.position += (Vector3.forward * Time.deltaTime * speed);
更新中
transform.up相对于旋转向上。因此,如果相机是朝前的,那应该适合你的精灵。
transform.Translate(transform.up*Time.deltaTime*SheepMovementSpeed)是,或在FixedUpdatetransform.position+=(Vector3.forward*Time.deltaTime*SheepMovementSpeed);请帮助:(顺便说一句,它是二维的。尝试transform.Translate(Vector3.up*Time.deltaTime*SheepMovementSpeed)transform.Translate(SheepMovementSpeed*Time.deltaTime,SheepMovementSpeed*Time.deltaTime,0);这会移动绵羊,但方向错误