에니메이션 질문입니다.

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
dakidang
Posts: 12
Joined: 2009-07-19 14:51

에니메이션 질문입니다.

Post by dakidang »

제가 에니메이션 구간을 제어할 때 처음에 에니메이션의 정보를 미리 설정해주구요

밑에 함수들을 통해서 구간과 동작을 제어를 하거든요. 계속 루프를 돌아야할지
아니면 한번 돌고 끝나야하는건지 아니면 마지막 프레임에서 일정 조건동안 정지해야하는지
이런걸 제어해주도록 해놨거든요.

void CCPlayerMag::CharacterInfosetting()
{
//(구간인덱스, 시작 프레임, 마지막 프레임, 이벤트 프레임, 플레이 타입)
m_CResource->TimeSet(PLAYER_ANISTANDILG, 0, 129, 0, MODE_LOOP);
m_CResource->TimeSet(PLAYER_ANIRUN, 130, 161, 0, MODE_LOOP);
m_CResource->TimeSet(PLAYER_ANIATTACK, 162, 213, 0, MODE_ONTIME);
m_CResource->TimeSet(PLAYER_ANIHIT, 214, 249, 0, MODE_ONTIME);
m_CResource->TimeSet(PLAYER_ANIDIE, 250, 322, 0, MODE_LASTKEEP);
}

이런식으로요. 미리 설정을 해주구요.

void CCAnimation::AniReady(int Aniindex, int StartTime, int endtime, int playtype)
{

if (m_anitype == MODE_LOOP)
{
m_CerrantIndex = Aniindex; m_starttime = StartTime; m_endtime = endtime; m_anitype = playtype;
}
else if (m_anitype == MODE_ONTIME)
{
if (m_aniturn == true)
{
m_CerrantIndex = Aniindex; m_starttime = StartTime; m_endtime = endtime; m_anitype = playtype;
m_aniturn= false;

}
else
{

}
}
else
{
if (m_anilock == true)
{
m_CerrantIndex = Aniindex; m_starttime = StartTime; m_endtime = endtime; m_anitype = playtype;
m_anilock = false;
}
else
{

}
}



AniLockchack(m_anitype, m_CerrantIndex);
}


void CCAnimation::AniLockchack(int playtype, int Aniindex)
{
playtime = 0.01f;

if (m_keepindex2 != Aniindex)
{
m_plustime = m_starttime;
}
if (playtype == MODE_LOOP && m_plustime >= m_endtime)
{
m_plustime = m_starttime; playtime = 0.01f;
}
else if (playtype == MODE_ONTIME && m_plustime >= m_endtime)
{
m_aniturn = true; playtime = 0.01f;


}
else if (playtype == MODE_LASTKEEP && m_plustime >= m_endtime)
{
m_anilock = true; playtime = 0.00f;
}

m_keepindex2 = Aniindex;

m_plustime++;
}

근데 문제는 맨위에 설정해놓은 프레임은 3D맥스에서의 프레임 수치 그대로 쓰고있거든요
어짜피 한번그릴때 한프레임씩 가는거라 알고있어서요. 함수 한번불러질 때 한번씩 증가하게
되잖아요. 그래서 이렇게 해놨는데 뭔가 에니메니션이 제대로 안되내요 계속 루프돌아야할거 뭐 이런거는
제대로 되는것 같은데 한동장이 100이다 하면 이 100이 다 안되고 한 60? 이정도하고 끝나버리내요.

이거 왜 그런거죠? 그리고 구간의 처음과 끝을 알아올 수 있는 방법은 없나요? 아 한가지만 더요.
에니메이션이 재생되다가 끝기고 다시 재생하려면 끈겼던 부분부터 이어서 재생되던데 끈겨도 처음부터
재생되게 하려면 어떻게 해야되죠?
Locked