我使用的是getComponent()。velocity,但不知怎的,球没有弹跳得很好,每当球撞到对手的中间时,它应该在没有改变方向的情况下反弹回来。请帮忙 !!!任何帮助都会感激不尽......这是我的代码:
float getBallPos(Vector2 ballPos, Vector2 boxPos, float boxWide ){
return (ballPos.x - boxPos.x)/boxWide ;
} ---> to get the bounce direction
void OnCollisionEnter2D (Collision2D other){
isHit = true;
if (other.gameObject.tag == "up") {
float x = getBallPos (transform.position, other.transform.position, other.collider.bounds.size.x);
Vector2 dir = new Vector2 (x, 1).normalized;
Debug.Log ("normalized : " + dir);
GetComponent<Rigidbody2D> ().velocity = dir * 5f;
}else if (other.gameObject.tag == "down") {
float x = getBallPos (transform.position, other.transform.position, other.collider.bounds.size.x);
Vector2 dir = new Vector2 (x, -1).normalized;
Debug.Log ("normalized : " + dir);
GetComponent<Rigidbody2D> ().velocity = dir * 5f;
}
}
答案 0 :(得分:0)
您应该创建一个具有高弹性和低摩擦力的物理材质2D并将其应用于您的collider2D(您应该看到这些值,直到您感觉舒服为止。
您可以在Assets-&gt; Create-&gt; Physics2D Material。
中创建它们你正在尝试做的是模拟物理学,它需要一个有点复杂的数学模型。