UnityFactory_#00

Rio·2021년 7월 23일
0

Unity

목록 보기
1/6

🌈 게임 경과 시간 기록하기

  • 장애물을 일정 시간 마다 등장 시키거나, 전체 게임 실행 시작 시간을 기록할 필요가 있다.
  • 그럴 때 사용하는 것이 Time.deltaTime
//게임 진행 시간 저장하기
float currentTime = 0f;
void Update(){
	current += Time.deltaTime;
}
//일정 시간마다 오브젝트 생성하기
GameObject enemeyPrefab; //prefab
GameObject enemyPosition; //prefab위치
float creatTime = 2f; //2초마다 생성
float currentTime = 0f;
void Update(){
	current += Time.deltaTime;
    	if(currentTime>=creatTime){
        	GameObject enemy = Instantiate(enmeyPrefab); //객체 생성
            	enmey.tranform.position = enemyPosition.position; //생성된 객체 위치 설정
        }
}

🍫 Player를 따라오게 하는 Pet 만들기

  • 우선 Follow할 타겟을 설정
  • 타겟을 향하기 위해서는 백터 빼기 연산 실행
  • 중요) 백터 연산을 정규화를 해줄 것!!
  • 나온 방향 벡터를 가지고 오브젝트 position을 계산

public class Pet : MonoBehaviour
{
    public GameObject target; //따라갈 대상
    public float speed = 2.0f;

    // Update is called once per frame
    void Update()
    {
        /*
         * 타겟 방향으로 이동하고 싶다
         * 1.타겟 방향을 구하자 -> 벡터의 빼기
         * - 타겟 방향 = 타겟 위치 - 나의 위치
         */
        Vector3 dir = target.transform.position - transform.position;
        dir.Normalize(); //벡터의 정규화를 할 것
        //그 방향으로 이동하고 싶다 Posisiton = Direction * Poisitiont
        transform.position += dir * speed * Time.deltaTime;
    }
}

🤿 Layer 적용하기 (collider 구분하기)

  • 충돌 게임의 경우 장애물끼리는 충돌해도 사라지면 안됨
  • 장애물 외 오브젝트와 충돌했을 때 사라짐을 구현
  • 이때 사용하는 것이 Layer ( 처음에는 tag를 떠올렸다는...)
  • 간단하게 코드 작성 없이 장애물끼리는 충돌하지 않고 이외의 오브젝트와는 충돌을 인식
  • 충돌 인식 관련 [참고] https://cpp11.tistory.com/13

    1. Layer에 장애물 레이어를 추가 2. 물리 속성 체크 해제
    - Player Setting -> Phyisc -> 맨 밑 매트릭스 -> 추가한 Layer가 있음 -> 체크 해제

🎯 Script로 오브젝트 가져오기

  • Hierarchy는 프로그램 실행 시 메모리 영역, Project는 디스크 영역이라 인스펙터에서 오브젝트를 drag&drop이 안된다 ex) Prefab 오브젝트를 가져올 때 or Script를 가져올 때
  • 이런 상황에서는 start()에서 찾아주면 된다
  • 찾아서 가져오게 되면 그 오브젝트의 속성에 접근하면 된다
    AudioPlayer audioPlayer;
    GameObject target;
    Vector3 dir;
    
    private void Start()
    {
        //오브젝트 타입으로 오브젝트 찾기
        audioPlayer = FindObjectOfType<AudioPlayer>();

        //오브젝트 이름으로 오브젝트를 찾기 +그 게임오브젝트 전체 가져오기
        target = GameObject.Find("Player").gameObject;
        print(target.transform.position) //찾은 게임 오브젝트
    }
profile
우당탕탕 개발 기록지

0개의 댓글