我正在以unity5创建一个Brick Breaking游戏。
我的代码是:
void OnCollisionEnter(Collision collision)
{
foreach (ContactPoint contact in collision.contacts)
{
if(contact.thisCollider == collider1)
{
float cp = contact.point.x - transform.position.x;
contact.otherCollider.attachedRigidbody.AddForce(reflectionForce * cp, 0.0f, 0.0f);
}
}
}
所以基本上我的球拍是根据接触点与中心的距离增加球的力量。距离越远,球的力量和方向就越多。
问题在于,如果球在桨的一侧受到撞击,那么每次击中桨时它的速度都会增加,最终无法击中。
那么,有什么方法可以在不增加力量的情况下为球添加方向。
答案 0 :(得分:0)
这是一个在每次碰撞后添加const速度的代码。
void OnCollisionEnter(Collision collision)
{
foreach (ContactPoint contact in collision.contacts)
{
if(contact.thisCollider == collider1)
{
float cp = contact.point.x - transform.position.x;
contact.otherCollider.attachedRigidbody.AddForce(reflectionForce * cp, 0.0f, 0.0f);
float maxSpeed = 2.0f; //for example
Vector3 vel = contact.otherCollider.attachRigidbody.velocity;
contact.otherCollider.attachRigidbody.velocity = Vector3.ClampMagnitude(vel,maxSpeed);
}
}
}