Unity_beginner #12

haechi·2021년 7월 12일
0

unity

목록 보기
12/39

210712
unity_beginner #12


  • 충돌시 호출되는 Method만들기

Collision type -> 충돌한 상대에 대한 정보가 들어있다.

OnCollisionEnter을 사용 -> 유니티 내에서 정의되어있는 메소드이다.
충돌시 호출된다. -> 충돌은 게임 오브젝트의 collider가 충돌하는 것이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Obstacle : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        Vector3 direction = collision.gameObject.transform.position - transform.position;
        direction = direction.normalized * 100;
        collision.gameObject.GetComponent<Rigidbody>().AddForce(direction);

    }

    float delta = 0f;
    // Start is called before the first frame update
    void Start()
    {
    
    }

    // Update is called once per frame
    void Update()
    {
        float newXPosition = transform.localPosition.x + delta;
        transform.localPosition = new Vector3(newXPosition, transform.localPosition.y, transform.localPosition.z);
        if(transform.localPosition.x < -3.5)
        {
            delta = 0.03f;
        }
        else if(transform.localPosition.x > 3.5)
        {
            delta = -0.03f;
        }
    }
}
  • 코드 내 OnCollisionEnter부분
    Obstacle이 충돌한 대상을 Collision type 의 collsion으로 받는다.
    transform.position // 현재 내 위치
    collision.gameObject.transform.position // 충돌한 상대의 위치
    따라서 direction = 공 위치 - 장애물 위치 -> 방향이 나온다.
    direction = direction.normalized * 100 // 방향은 힘을 가지고 있는데 이 힘이 충돌한 방향에 따라 바뀌기 때문에 normalize를 해줘야한다. 힘을 가하기 위해 100을 곱한다.
    힘을 상대에게 주기 위해서 collision.gameObject.GetComponent() 충돌한 물체의 rigidbody를 가져온다. -> 즉, 충돌한 물체인 공의 rigidbody를 가져온다.
    여기에 AddForce를 사용함으로써 튕겨나가도록 한다.

참고
https://programmers.co.kr/learn/courses/1/lessons/666#note

profile
공부중인 것들 기록

0개의 댓글