我当时正在从事汽车战争3D游戏,因此每辆汽车都试图撞到其他汽车。基于碰撞,我在施加碰撞力的情况下将碰撞的汽车往后拖。
发生碰撞时,请用力将其送回。这是我使用的代码:
void OnCollisionEnter (Collision other)
{
if (other.gameObject.CompareTag (GameConstants.TAG_ENEMY)) {
appliedSpeed = speed * 0.5f;
elapsedEngineStartWaiting = 0f;
ApplyReboundForce (other);
}
}
private void ApplyReboundForce (Collision other)
{
Vector3 force = transform.position - other.transform.position;
force.Normalize ();
myRigidbody.AddForce (force * 150f, ForceMode.Force);
}
我用速度驾驶了汽车:
elapsedEngineStartWaiting += Time.deltaTime;
if (elapsedEngineStartWaiting < 0.7f) {
return;
}
// Move the player forward
// thisTransform.Translate(Vector3.forward * Time.deltaTime * speed, Space.Self);
appliedSpeed += Time.fixedDeltaTime * 7f;
appliedSpeed = Mathf.Min (appliedSpeed, speed);
myRigidbody.velocity = transform.forward * appliedSpeed;
目前,在碰撞后,尽管我将恒定的脉冲施加到刚体上,但根据当前的汽车速度和碰撞角度,汽车后移行为仍然保持动态。
我想,按照我的游戏实现,两辆汽车相撞时会得到相同的反弹力。这是我无法实现的,因此我希望您对此提出一些建议。