충돌한 직사각형 블럭의 진행 방향을 받아와서 직사각형 블럭을 그 방향으로 넘어지게함 스크립트 하나임



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class Play : MonoBehaviour

{

    private string Rotate_Dir; //동,서,남,북 가능

    public float Rotate_Timer = 0.5f, Rotate_Angle = 10f;

    private float Timer;

    public string Triger_Dir;

    private int Col_Count=0;

    public bool Triger = false;

    private Rigidbody Target;


    private void OnCollisionEnter(Collision collision)

    {

        if (Col_Count == 0 && Triger==false) /*충돌 카운트가 0이면 1로 만들어서 아래 명령이 1번만 실행되게함 트리거 false라는 조건을 붙이지 않으면

            트리거 블럭도 충돌 이벤트를 실행하므로 오류가 생기게됨*/

        {

            Col_Count = 1;

            Rotate_Dir = collision.transform.GetComponent<Play>().Rotate_Dir; //충돌된 객체의 회전 진행 방향을 읽어와서 자신의 회전 진행 방향에 동기화 시킴

        }

    }


    private void Awake()

    {

        Rotate_Dir = Triger_Dir;

    }

    void Start()

    {

        

        Timer = Rotate_Timer;

    }

    void Update()

    {

        Timer -= Time.deltaTime; //타이머 감소

        if(Rotate_Dir=="동" && transform.rotation.eulerAngles.z != 270f && Timer<0f)

        {

            Timer = Rotate_Timer;

            transform.Rotate(0f, 0f, -Rotate_Angle);

        }


        if (Rotate_Dir =="서" && transform.rotation.eulerAngles.z <= 80f && Timer < 0f)

        {

            Timer = Rotate_Timer;

            transform.Rotate(0f, 0f, Rotate_Angle);

        }


        if (Rotate_Dir == "남" && transform.rotation.eulerAngles.x != 270f && Timer < 0f)

        {

            Timer = Rotate_Timer;

            transform.Rotate(-Rotate_Angle, 0f, 0f);

        }


        if (Rotate_Dir == "북" && transform.rotation.eulerAngles.x != 90f && Timer < 0f)

        {

            Timer = Rotate_Timer;

            transform.Rotate(Rotate_Angle, 0f, 0f);

        }


    }

}