본문 바로가기
프로그래밍/Unreal Engine 3

AnimTree > AnimNodeBlend

by neive 2011. 12. 15.
728x90


일단 자연스럽게 동작을 전환하고 싶은 2개의 애님시퀀스를 AnimNodeBlend 로 해서 Child1,2 로 연결을 합니다

이렇게 해놓고 이제 스크립트 상에서 제어를 해야되는데..

예제

// class uc 내부
var AnimNodeBlend AnimNodeBlend;

function SetAnimTreeBattle()
{
	GotoState('ChangeMode', 'Battle');
}

state ChangeMode
{
	simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp)
	{
		Super.PostInitAnimTree(SkelComp);
		
		AnimNodeBlend = AnimNodeBlend(SkelComp.FindAnimNode('WeaponSwitch'));
		AnimNodeBlend.SetBlendTarget(0.0f, 0.5f);
	}
	
Normal:
	// 생략
	AnimNodeBlend.SetBlendTarget(0.0f, 0.5f);
	GotoState('');

Battle:
	BodySkeletalMesh.AnimSets = BattleAnim;
	BodySkeletalMesh.SetAnimTreeTemplate(BattleAnimTemplate);
	Sleep(1.1f);
	AnimNodeBlend.SetBlendTarget(1.0f, 0.5f);
	GotoState('');
}

state 를 이용한 한정적 범위 내에서의 수정을 가해 봅시다. SetAnimTreeTemplate 을 사용하면
위에서 작업한 AnimTree 로 바꿔주고 그와 동시에 PostInitAnimTree 로 자동으로 들어오게 되고~
여기서 아까 추가한 AnimNodeBlend 를 찾아서 AnimNodeBlend 에 연결을 시켜놓고,
SetBlendTarget 을 이용해서 0 에 가까울 수록 아까 설정한 child 1 에 가깝게, 1 에 가까울 수록 child 2
에 가깝게 애니메이션이 동작하게 됩니다. 그것을 이용해서 Normal 과 Battle 을 번갈아 호출하면
idle 과 무기를 발도 하는 동작이 자연스럽게 스위칭 되게 됩니다. 그리고 임시로 만든 state 벗어나고..

728x90

'프로그래밍 > Unreal Engine 3' 카테고리의 다른 글

UDK > 내 게임 만들기  (0) 2011.12.23
AnimNodeBlendBase  (0) 2011.12.21
FootPlacement  (0) 2011.12.14
언리얼 스크립트 > state  (0) 2011.12.08
Camera & Input  (0) 2011.12.03

댓글