我想像这样在发生碰撞后向后扔车。 很少有碰撞示例,下图显示了其碰撞后向。
汽车以施加的速度行驶,而我连续施加速度以恒定速度行驶。刚发生碰撞时,我已经停止施加速度一段时间了,因此可以获得一些碰撞响应。
我想根据Bumper.io游戏获得碰撞响应: Bumper.io Part 1 (IOS/Android)
目前,我已经为此目的编写了一些代码,但是它的行为不完全是这样:
void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag(GameConstants.TAG_ENEMY) || other.gameObject.CompareTag(GameConstants.TAG_PLAYER))
{
elapsedEngineStartWaiting = 0f;
StartCoroutine(ApplyReboundForce(other));
}
}
IEnumerator ApplyReboundForce(Collision other)
{
Vector3 centroid = new Vector3(0, 0, 0);
foreach (ContactPoint contact in other.contacts)
{
centroid += contact.point;
}
centroid = centroid / other.contacts.Length;
Vector3 projection = transform.position;
projection.x = centroid.x;
Vector3 normaliseCollisionPoint = Vector3.Normalize(projection - centroid);
float collidedBodyMass = other.gameObject.GetComponent<Rigidbody>().mass;
myRigidbody.velocity = Vector3.zero;
myRigidbody.angularVelocity = Vector3.zero;
int i = 0;
while (i < 4)
{
myRigidbody.AddForce(normaliseCollisionPoint * GameConstants.CAR_COLLISION_IMPULSE * collidedBodyMass, ForceMode.Impulse);
yield return new WaitForFixedUpdate();
i++;
}
}
我在上图中提到,目前,碰撞响应力的方向没有保持不变。 我要强制/施加上述方向。
给我一些建议,以便我能够执行建议的事情。