【问题标题】:Unity 2D Spinning Platform With Physics具有物理功能的 Unity 2D 旋转平台
【发布时间】:2015-10-24 23:24:34
【问题描述】:
在 Unity 中,我想创建一个像螺旋桨一样旋转的平台。当它撞到一个物体时,我希望那个物体朝着一个合乎逻辑的方向飞行。如果我只是每帧更新对象的旋转,对象往往会粘在平台上并以更高的速度通过它。我认为 Unity 的物理特性将是最好的解决方案 - 我怎样才能以恒定的速度旋转平台,以便它可以做我想做的事情?此外,如何在不加速或减速的情况下启动和停止旋转?我正在使用 C#。
【问题讨论】:
标签:
unity3d
3d
rotation
2d
physics
【解决方案1】:
如果您希望将 Unity 的物理特性融入您的平台行为,但又不想通过增加力/扭矩来改变其旋转速度,请考虑使用 Rigidbody.angularVelocity。有了这个,您还可以立即开始和停止旋转(在使用 RigidBody 时使用 FixedUpdate())。
所以你的代码可能看起来像:
Vector3 activeVelocity = new Vector3(0, 10, 0);
bool isStopped = false;
RigidBody rBody;
void Start() {
rBody = GetComponent<Rigidbody>();
}
void FixedUpdate() {
if (!isStopped){
rBody.angularVelocity = activeVelocity;
}
else{
rBody.angularVelocity = Vector3.zero;
}
}
public void ActivateRotation() {
isStopped = false;
}
public void FreezeRotation() {
isStopped = true;
}
希望这会有所帮助!如果您有任何问题,请告诉我。