【发布时间】:2021-07-01 21:17:34
【问题描述】:
所以我正在使用 Unity 和 Visual Studio 进行测试,作为一个入门项目,我正在努力复制 Zelda (NES),并且我从运动开始。
到目前为止,我已经弄清楚了如何防止对角线移动,但我在弄清楚下一部分时遇到了麻烦。在游戏中,如果有 2 个输入时倾向于垂直移动,但如果你撞到墙,它会让你水平移动,直到没有任何东西阻挡你的垂直移动。
我什至不知道该怎么做。任何人都有可以为我设定正确方向的想法?或者也许只是一种更好的方法?我还在学习 C#
public float MoveSpeed;
public Rigidbody2D rb;
Vector2 movement;
void Update() {
MovementInput();
}
private void FixedUpdate() {
rb.velocity = movement * MoveSpeed;
}
void MovementInput() {
float mx = Input.GetAxisRaw("Horizontal");
float my = Input.GetAxisRaw("Vertical");
//This makes diagonal impossible, favoring vertical.
if (my != 0) {
mx = 0;
}
movement = new Vector2(mx, my).normalized;
}
【问题讨论】:
-
如果我没记错的话,Axis 是一个介于 -1 和 1 之间的值。可能值得考虑同时采用 X 和 Y 值,使用Mathf.Abs,然后看看哪个更大应该改为应用它。需要考虑它们何时相等,但运动偏差应该小得多。
标签: c# visual-studio unity3d