【发布时间】:2015-05-27 19:22:33
【问题描述】:
我有一个具有初始爆发力的球,将其发射到空中。理想情况下,这个球将能够在不断失去起始动力的同时转向其目标。它在朝着目标前进时不应获得任何速度。
重要的是!它也可以在墙上反弹,这也降低了它的动量。
Unitys 内置的物理系统非常适合将东西扔到墙上并看到它以非常自然的方式弹跳,我想保留它但轻轻地将它推向目标。
我发现的大多数解决方案(特别是用于寻的导弹)都会增加持续的力,如果它们是自供电的,那就没问题了。
在此之前的脚本中,我会给球一个说... 100 的力量
ballRigidbody.Addforce(targetDirection, ForceMode.Impulse);
然后我希望它使用“运动”类来引导。
下面是一个通过不断增加力量推动球的例子,所以它更像火箭(不是我想要的!)
public class Movement : MonoBehaviour {
[Header("Get Components")]
[SerializeField]Transform targetTransform_gc;
[SerializeField]Transform ballTransform_gc;
[SerializeField]Rigidbody ballRigidbody_gc;
[Header("Settings")]
public float turnSpeed;
public float ballSpeed;
//Private
private Vector3 targetDirection;
private Quaternion targetRotation;
void Update () {
targetDirection = targetTransform_gc.position -ballRigidbody_gc.position;
targetDirection.Normalize();
targetRotation = Quaternion.LookRotation(ballRigidbody_gc.velocity);
ballTransform_gc.rotation = Quaternion.Slerp (ballTransform_gc.rotation, targetRotation , turnSpeed * Time.deltaTime);
}
void FixedUpdate(){
ballRigidbody_gc.AddForce(targetDirection * ballSpeed);
ballRigidbody_gc.velocity = new Vector3(ballRigidbody_gc.velocity.x, 0, ballRigidbody_gc.velocity.z);
}
}
如果有人有一些指示或建议,我将不胜感激。
非常感谢!
【问题讨论】:
-
我认为您正在寻找一种叫做“脉冲”的物理东西。
-
嗨,Almo,感谢您的评论。在固定更新中将力更改为脉冲 (targetDirection * tankShellSpeed, ForceMode.Impulse);不是我要找的。那仍然有完全相同的问题。我会在我的帖子中明确说明它已经添加了一种力量。
标签: c# unity3d game-physics