在不增加力的情况下向球体添加方向

时间:2015-03-13 10:16:43

标签: c# unity3d

我正在以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);
        }
    }
}

所以基本上我的球拍是根据接触点与中心的距离增加球的力量。距离越远,球的力量和方向就越多。

问题在于,如果球在桨的一侧受到撞击,那么每次击中桨时它的速度都会增加,最终无法击中。

那么,有什么方法可以在不增加力量的情况下为球添加方向。

1 个答案:

答案 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);
    }
}

}