d3dx - 21.10.26

김주현·2021년 10월 26일
0

d3dx9 3D

목록 보기
15/30

플레이어 몬스터 추적 Chase_Target();

  1. 몬스터의 위치를 얻어온다

_float3 vPosition = Get_State(STATE_POSITION);

  1. 몬스터에서 플레이어를 바라보는 방향벡터를 구한다

_float3 vChase = pTranseform->Get_State(STATE_POSITION) - vPosition;

  1. 방향벡터를 정규화해서 초당속도 * 시간해서 더해주자

D3DXVec3Normalize(&vDir, &vDir);

vPosition += vDir m_TransformState.fSpeedPerSec fTimeDelata;

  1. 내 월드벡터에다가 적용시켜주자

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)

몬스터가 백그라운드를 바라보는 방향벡터를 구하고 정규화후 원래의 스케일을 곱해주자.

업과 룩을 외적해서 라이트를 구해주자.
다음 라이트를 정규화후 스케일을 곱해주자.

0개의 댓글

관련 채용 정보