统一更新运动向量。向量值的物理意义

时间:2019-06-07 08:41:45

标签: c# unity3d

我试图从第二章结尾的“行动中的团结”一书中理解该示例的物理含义。在此代码中,对象正在帧中移动到“增量” Vector3。这里的Vector3是速度矢量吗?如果是,为什么作者在同一矢量中使用重力变量,其重力加速度值为(9.8)?

keyDown[90] && keyDown[17] && keyDown[91]

2 个答案:

答案 0 :(得分:0)

Vector3运动是游戏一帧(更新)中角色运动差异的向量。

要移动,他首先将X和Z轴的用户控件乘以速度。

然后您需要施加重力,因为没有重力,您将在任何地方飞行而不是步行,因此您需要为垂直轴Y施加重力。“ 9.8”是地球上的标准重力。

然后,您需要将所有内容(此运动矢量)乘以增量时间,该增量时间表示框架更新和渲染所花费的时间。没有增量时间,您将在不同的帧频下获得不同的结果。

然后他将“运动”矢量(正如我所说的在一帧中的运动差异)应用于角色的当前位置。

答案 1 :(得分:0)

统一移动对象有两种

  1. 向部队施加力量并推动其移动
  2. 每次设置单位位置(也称为滑动单元)

在您的情况下,它是类型2,因此您的Vector3动作指示移动单元的位置。

在您的代码中,移动是由速度值乘以多个Input.GetAxis()(值范围:[0,1])计算的,然后将最大距离乘以单位可以移动movement = Vector3.ClampMagnitude(movement, speed);的间隔。 它仅用于单位在地面上移动(向左,向右,向前,向后)

接下来是单位高度,移动y轴,该轴等于重力值(9,8)乘以deltaTime。这意味着每1秒单位高度将减少9.8

毕竟,将movement从本地转换为世界,然后通过movement设置移动单位的位置。

希望我的回答可以解决您的问题。