我一直在做一些研究,为什么我的玩家(GameObject)在我的TopDown 3D游戏中不向我的鼠标位置旋转,我似乎找不到我的代码有什么问题,所以我写了这篇文章。我的问题是,只有我的球员的GameObject (在我的情况下,一个胶囊)旋转到我的鼠标位置,但我的球员的轴保持不变。换句话说,我不能旋转我的播放器的轴,面对我的鼠标位置,但我可以旋转我的播放器的GameObject面对我的鼠标位置。这真的很难解释,这在我身上从来没有发生过。问题是我如何旋转我的球员的轴,以面对我的鼠标位置。记住,我的游戏是一个自上而下的视图。
下面是im为我的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);
}
}再次,我试图在我的代码中寻找任何错误,但我找不到导致这种奇怪情况的任何东西,所以如果有人能帮助我找到更好的方法来编写这段代码并解决我的问题,那就太好了!
发布于 2021-01-06 00:40:46
如果我正确地理解了你的游戏,你的游戏一切都很好,玩家正在按它应该的方向旋转,但只有在编辑器中,玩家的轴线(红色、绿色和蓝色箭头)才不会随玩家旋转吗?
如果这是问题所在,那么您可能使用的是全局空间句柄,而不是本地空间。点击我在图像中突出显示的图标就可以了。

发布于 2021-01-06 08:26:20
使用此代码代替LookAt()函数
Vector2 direction = mousePos.position - player.transform.position;
player.transform.right /* Maybe you need Up or -Up or -right */ = direction;在某些情况下,这也是可行的。
Vector2 direction = new Vector2
(
mousePos.position.x - player.transform.position.x,
mousePos.positoin.y - player.transform.position.y
)
player.transform.right /* Maybe you need Up or -Up or -right */ = direction;https://stackoverflow.com/questions/65588217
复制相似问题