25/03/11 멋사 정리

YSB1026·2025년 3월 12일
0

오늘 유니티로 드래곤 플라이트 실습했고,
적 구현은 Enemy_small(제일 작은 적)까지만 했었고,
나머지 적들이 대각선으로 움직이거나, player의 발사 속도 조절 등은 내가 구현함

깃허브 링크

오늘 알게 된 것

1.v키를 활용해서 2D 게임 오브젝트를 특정 정점에 딱 붙이거나 할 수 있다.

2.보통 물리기반(rigid body)의 연산이 있는경우 fixed update에서 
rigidbody의 velocity를 조절한다.
아닌경우엔 Update에서 transform의 position or translate을 활용.

3.카메라에서 보이지 않을 때 호출되는 함수, 이를 활용해서 메모리를 아낄 수 있다.
   private void OnBecameInvisible()
    {
        Destroy(gameObject);//객체 삭제
    }
근데 Game 카메라 말고도, Scene에서 카메라도 카메라 판정을 받는거 같다. 
Scene 밖까지 나가야 destroy됨.


4.//InvokeRepeating(함수이름, 초기 지연 시간, 지연할 시간)
InvokeRepeating("Shoot", 0.5f, 0.5f);

5. Instantiate(GameObject, Vector, Quaternion) Quaternion.identity//회전인거같은데 나중에 봐야겠다.

6.tag == 로 비교하는 것보다는 CompareTag가 더 좋습니다
tag==는 가비지컬렉터의 먹이가 됩니다
콜라이더에서 태그 비교할때는 compare 쓰는게 좋다고 들었어요

7.✅ 충돌 감지를 위해선 적어도 하나의 Rigidbody2D가 필요함.
✅ 둘 다 isTrigger=false, OnCollisionEnter2D()를 사용해야 함.OnTriggerEnter2D()를 사용하려면, 적어도 하나의 Collider2D가 isTrigger=true여야 함.
stay는 머무를때, exit는 나갈 때.

8. 유니티에서 컨트롤 쉬프트 C 눌러서 에러 더블클릭하면 바로 에러난곳까지 간다는 내용을 봐서 기록

9. 4학년때 유니티 게임 개발하면서 써보긴 했었는데 다시 정리.
(//C# 코루틴(coroutine)정리
//코루틴은 일반적인 함수와 달리 실행을 멈췄다가 다시 이어서 실행할 수 있는 기능
//코루틴을 활용하면 일정 시간 후 실행되거나, 특정 조건을 기다리는 등의 기능을 구현 가능.
//4학년 때 만든 고양이의 모험은, 플레이어 공격 이펙트에 코루틴 활용해서 했음.)

    void Start()
    {
        //StartCoroutine("StartCoroutine");//이것도 됨
        StartCoroutine(ExampleCoroutine());
    }

    void Update()
    {
        
    }

    IEnumerator ExampleCoroutine()
    {
        Debug.Log("코루틴 시작");
        yield return new WaitForSeconds(2f);//2초 대기
        Debug.Log("2초 뒤 시작");
    }

        //무한 루프인데, 1초마다 루프 돌게할 수 있다.
        while (true)
        {
            Debug.Log("매 1초마다 실행");
            yield return new WaitForSeconds(1f);
        }


10. Invoke와 코루틴이 비슷한거 같은데 각각 어떤 상황에 사용하는 건가요?(나도 궁금했어서 물어봄)

우선 InvokeRepeating은 특정 시간마다 반복이 되고
Coroutine같은경우에는 멈췄다 실행했다 조절하기가 쉽습니다 

반면에 코루틴은 파라미터 전달이 가능하고 StopCoroutine메서드라 취소가 가능하죠

Invoke 같은 경우는 매개변수를 넘길 수는 없는 걸로 알고 있어서 저 같은 경우는 
코루틴을 더 많이 사용합니다. 그냥 상황에 맞게 편한거 사용하시면 될듯 합니다

그리고 코루틴은 해당 오브젝트가 없어지거나 액티브가 꺼진후 다시 해당 오브젝트를 켜면 
코루틴이 멈춰 있지만, InvokeRepeating  같은 경우는 해당 게임 오브젝트가 액티브가 꺼지거나 
없어져도 계속 돌기 때문에 InvokeRepeating을 직접 해제해야만 멈출수 있습니다.

라는 답변을 얻었음.

0개의 댓글