我试图从第二章结尾的“行动中的团结”一书中理解该示例的物理含义。在此代码中,对象正在帧中移动到“增量” Vector3。这里的Vector3是速度矢量吗?如果是,为什么作者在同一矢量中使用重力变量,其重力加速度值为(9.8)?
keyDown[90] && keyDown[17] && keyDown[91]
答案 0 :(得分:0)
Vector3运动是游戏一帧(更新)中角色运动差异的向量。
要移动,他首先将X和Z轴的用户控件乘以速度。
然后您需要施加重力,因为没有重力,您将在任何地方飞行而不是步行,因此您需要为垂直轴Y施加重力。“ 9.8”是地球上的标准重力。
然后,您需要将所有内容(此运动矢量)乘以增量时间,该增量时间表示框架更新和渲染所花费的时间。没有增量时间,您将在不同的帧频下获得不同的结果。
然后他将“运动”矢量(正如我所说的在一帧中的运动差异)应用于角色的当前位置。
答案 1 :(得分:0)
统一移动对象有两种
在您的情况下,它是类型2,因此您的Vector3
动作指示移动单元的位置。
在您的代码中,移动是由速度值乘以多个Input.GetAxis()
(值范围:[0,1])计算的,然后将最大距离乘以单位可以移动movement = Vector3.ClampMagnitude(movement, speed);
的间隔。
它仅用于单位在地面上移动(向左,向右,向前,向后)
接下来是单位高度,移动y轴,该轴等于重力值(9,8)乘以deltaTime。这意味着每1秒单位高度将减少9.8
毕竟,将movement
从本地转换为世界,然后通过movement
设置移动单位的位置。
希望我的回答可以解决您的问题。