火箭穿过目标的问题,我也无法避免这种情况发生

火箭穿过目标的问题,我也无法避免这种情况发生

我最近遇到了由于速度导致火箭穿过目标的问题速度感 unity贴图笔刷,即使是连续的动态碰撞检测3D道具,我也无法避免这种情况发生。我使用上发布的脚本“DontGoThroughThings”解决了这个问题。这使用当前位置和先前位置之间的光线投射,然后确保帧结束,并且连接的消息对象是OnTrigger事件的消息。从那以后每次都工作,这只是附加脚本的问题,因此非常容易使用。我认为物理学答案正如其他人建议使用具有不同阻力的多个组件,尽管通常我认为你只想在父母上使用一个RigidBody。而不是使用transform.LookAt的方向速度感 unity,您可以尝试使用rigidbody.velocity中的Quaternion.LookRotation进行计算。然后使用Vector3.Angle找出关闭的数量。角度差异越大,应经历的力越大,然后使用RigidBody.ApplyTorque。也许使用Sin(angleDifference)*一个常数,因此当你接近正确的旋转时,对扭矩施加的力更小。这是我在火箭上使用的一些代码,虽然你必须替换一些东西,因为我指向一个固定的目标,你会想要使用你的速度。

var rotationDirection = Quaternion.LookRotation(lockedTarget.transform.position - this.transform.position);
var anglesToGo = Vector3.Angle(this.transform.rotation.eulerAngles, rotationDirection.eulerAngles);
if (anglesToGo > RotationVelocity)
{
    var rotationDirectionToMake = (rotationDirection * Quaternion.Inverse(this.transform.rotation)).eulerAngles.normalized * RotationVelocity;
    transform.Rotate(rotationDirectionToMake);
}

文章来源:https://www.orcode.com/question/1251867_kf3242.html