天天看點

裝甲逆襲-NPC移動處理

處理NPC的移動,目前采取的方式是預設一段移動方式,然後在地圖中編輯,然後NPC讀取之後通過該方式移動。

#include "MoveNPCSprite.h"

bool MoveNPCSprite::init()

bool bRet = false;

do 

{

CC_BREAK_IF(! CommonNPCSprite::init());

runRoute[0][0]=0;

runRoute[0][1]=1;

runRoute[0][2]=2;

runRoute[0][3]=3;

runRoute[0][4]=-1;

moveflag=1;

moveindex=0;

movelength=0;

moveSpeed=1;

isShowDialogTip=false;

bRet = true;

} while (0);

return bRet;

}

void MoveNPCSprite::setValueInfo(npcinfo_struct npcinfo){

this->npcinfo=npcinfo;

this->setTag(this->npcinfo.npcTag);

}

void MoveNPCSprite::showDialogTip(){

if (!isShowDialogTip)

{

dialogTip=CCSprite::create("rpggame/other/showdialog.png");

dialogTip->setTag(1985);

dialogTip->setPosition(ccp(80,80));

this->addChild(dialogTip);

isShowDialogTip=true;

}

}

void MoveNPCSprite::notShowDialogTip(){

if (isShowDialogTip)

{

this->removeChildByTag(1985,true);

isShowDialogTip=false;

}

}

void MoveNPCSprite::moveByMoveKind(){

moveSprite(runRoute[npcinfo.npcmovekind][moveindex]);

movelength=movelength+moveSpeed;

if (movelength==npcinfo.npcmovelength)

{

moveindex=moveindex+moveflag;

movelength=0;

if (runRoute[npcinfo.npcmovekind][moveindex]==-1)

{

moveindex=moveindex-1;

moveflag=-1;

}else if (moveindex==-1)

{

moveindex=moveindex+1;

moveflag=1;

}

}

}

int MoveNPCSprite::getNowRunDirection(){

return runRoute[npcinfo.npcmovekind][moveindex];

}