작업자 : 장병래

  1. 축구공(ball)이 벽에 맞고 튀기면서 정해진 위치가 아닌

랜덤한 위치로 통통 튀는 기믹이므로 먼저 축구공과 충돌할 벽(wall)을 생성했습니다.

image.png

  1. wall과 ball과의 충돌을 위해 Box Collider 2D를 추가했습니다.

image.png

  1. Ball은 wall과의 충돌을 해야 하므로 Circle Collider 2D, Rigidbody 2D를

추가했습니다.

image.png

Gravity Scale이 기본 1로 설정 되어 있는데 중력의 영향을 적게 받기 위해서 0으로 변경하였으며

Collision Detection을 Discrete에서 Continuous로 변경했습니다.

wall은 고정되어 있는 Object 이기 때문에 정적(static) collider와 충돌을 감지하는데 유리한

Continuous를 사용했습니다.

ball의 특성을 추가하기 위해 Material에는 Physics Material 2D을 생성하여 추가하였습니다.

  1. 공이 벽에 맞으면 미끄러지는게 아니라 벽에 맞고 튕겨 나가야 하기 때문에 Friction(미끄러짐)을 0, Bounciness(탄력성)을 1로 설정했습니다.

image.png

  1. ball에 wallBounce.cs를 추가했습니다.
public class wallBounce : MonoBehaviour
{
    [SerializeField] [Range(500f, 2000f)] float speed = 1000f; 
    //ball 이동속도 최소 500f ~ 최대 2000f 
    public Rigidbody2D rb;
    float xBall, yBall;

    void Start()
    {
        
        rb = GetComponent<Rigidbody2D>();

        xBall = Random.Range(-1f, 1f);
        yBall = Random.Range(-1f, 1f);

        Vector2 dir = new Vector2(xBall, yBall).normalized;  
        //xBall과 yBall 값을 이용해 dir를 생성 
        //normalized는 방향 벡터의 크기를 1로 만들기 때문에, 단위 벡터로 방향만 남는다.

        rb.AddForce(dir * speed); 
        // Rigidbody2D에 AddForce를 사용해 dir 방향으로 힘을 가함
        힘의 크기는 speed에 의해 결정되며, 이 힘으로 공이 움직인다.
    }
}