플레이어 몬스터 추적 Chase_Target();
_float3 vPosition = Get_State(STATE_POSITION);
_float3 vChase = pTranseform->Get_State(STATE_POSITION) - vPosition;
D3DXVec3Normalize(&vDir, &vDir);
vPosition += vDir m_TransformState.fSpeedPerSec fTimeDelata;
Set_State(CTransform::STATE_POSITION,vPosition);
몬스터 클래스 추가
멤버변수와 함수는 백그라운드와 유사하게 선언하면된다.
몬스터의 원형은 MainApp의 Add_Prototype에서 해주자.
객체의 추가는 레벨로고에서 추가해주는 ReadyLayer_Monster함수 구현하자.
다음 레벨로고의 Native에서 레디레이어_몬스터를 해주자
몬스터의 위치와 크기는 몬스터의 NativeConstruct에서 m_pTransform->Set_Scale,Set_State 해주자.
이제 몬스터가 추적할수있게 Chase 함수를 호출해줘야하는데 이를위해 플레이어의 Transform을 구해와야한다.
플레이어 객체의 트랜스폼 구해오기
오브젝트매니저에 각 객체의 컴퍼넌트를 보관하고있다. -우선 게임인스턴스의 Get_ComponentPtr() 구현
어떤 인자가 필요할까? - 어떤인덱스에있는지,어떤 레이어에 추가되어있는지(레이어태그),어떤 컴포넌트를 가져올건지(컴포넌트 태그),레이어의 몇번째 객체의 컴포넌트를 가져올건지
이 함수를 오브젝트 매니저에 그대로 구현
오브젝트매니저의 겟_컴포넌트_ptr
Find_Layer 함수로 레이어 찾아오고
레이어의 겟_컴포넌트_ptr 함수를 구현하자
게임 오브젝트 클래스의 Get_ComponentPtr 구현해주자.
트랜스폼에 타겟을 바라보는 함수 구현
몬스터의 월드행렬
라이트(업과 룩을 외적해서 구하자!)
업(기존과 같다)
룩(백그라운드 - 몬스터)
포지션(기존과 같다)
LookAt_Target(CTransform * pTargetTransform)
몬스터가 백그라운드를 바라보는 방향벡터를 구하고 정규화후 원래의 스케일을 곱해주자.
업과 룩을 외적해서 라이트를 구해주자.
다음 라이트를 정규화후 스케일을 곱해주자.