충돌한 직사각형 블럭의 진행 방향을 받아와서 직사각형 블럭을 그 방향으로 넘어지게함 스크립트 하나임
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);
}
}
}
댓글 0