【问题标题】:Unity3D input.accelerationunity3D input.acceleration
【发布时间】:2018-06-03 11:40:53
【问题描述】:

我想用加速度输入统一移动一个物体:

if (...)
transform.translate(vector2.right*speed);
else if (...)
transform.translate(vector2.left*speed);

不知道应该是什么条件

【问题讨论】:

  • 什么会使对象向右移动?什么会让你的对象向左移动?这些问题的答案将取决于您的条件。

标签: unity3d unityscript


【解决方案1】:

嗯,从技术上讲,您完全可以在不使用条件的情况下实现这一运动。只需在 Update() 或 FixedUpdate() 中添加类似的内容即可(推荐使用 FixedUpdate())。

Vector2 dir = Vector2.zero;
void FixedUpdate()
{
   dir.x = Input.acceleration.x;
   transform.translate(dir * speed * Time.deltaTime);
}

这是因为当您的手机平放在平面上时,Input.acceleration.x 为 0。如果向右倾斜,则该值将为正。如果向左倾斜,该值将为负数。从而使您摆脱条件限制。

【讨论】:

  • 我只是想补充一点,即使使用 Input.GetAxis("Horizo​​ntal"),也不需要条件。
  • 非常真实!我尽量避免运动逻辑中的条件,因为它往往会使事情变得不稳定。
  • 谢谢布兰登。看,我的角色有 2 个课程。在第一堂课中,我通过在碰撞输入时添加强制来使角色跳跃(角色也有重力),在第二堂课中,我想让它通过加速度左右移动。我按照你说的做了,但是角色在跳跃 1 或 2 次后停止跳跃,有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 2017-03-22
相关资源
最近更新 更多