【发布时间】:2021-01-06 16:33:41
【问题描述】:
我一直在研究为什么我的玩家(游戏对象)在我的 TopDown 3D 游戏中没有向我的鼠标位置旋转,而且我似乎找不到我的代码有什么问题,所以我发表了这篇文章.我遇到的问题是,只有我的玩家的游戏对象(在我的情况下是一个胶囊)向我的鼠标位置旋转,但我的玩家的轴保持不变。换句话说,我不能旋转我的玩家的轴来面对我的鼠标位置,但我可以旋转我的玩家的游戏对象来面对我的鼠标位置。这真的很难解释,这在我以前从未发生过。问题是如何旋转我的播放器的轴以面对我的鼠标位置。请记住,我的游戏是自上而下的视图。
这是我用于 playerMouvment 和 mouseLook 的代码:
public class Controller : MonoBehaviour
{
public float moveSpeed = 6;
Rigidbody rb;
Camera viewCamera;
Vector3 velocity;
void Start()
{
rb = GetComponent<Rigidbody>();
viewCamera = Camera.main;
}
void Update()
{
Vector3 mousePos = viewCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, viewCamera.transform.position.y));
transform.LookAt(mousePos + Vector3.up * transform.position.y);
velocity = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized * moveSpeed;
}
void FixedUpdate()
{
rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
}
}
我再次尝试查找我的代码中的任何错误,但我找不到任何导致这种奇怪情况的东西,所以如果有人能帮助我找到更好的方法来编写这段代码并解决我的问题,那就太好了!
【问题讨论】:
标签: c# unity3d mouse-position