//아이템상자
if(item.Box.rife==TRUE)
{
item.Box.rect.left=myChar.getScrX()+100;
item.Box.rect.right=myChar.getScrX()+150;
item.Box.rect.top=myChar.getScrY()+50;
item.Box.rect.bottom=myChar.getScrY()+115;
BitBlt(m_BackMemdc,myChar.getScrX()+100,myChar.getScrY()+50, item.getWidth(), item.getHeight(),item.hImgdc ,0, 0,SRCPAINT);
}
else if(item.Box.rife=FALSE)
{
item.Box.rect.left=NULL;
item.Box.rect.right=NULL;
item.Box.rect.top=NULL;
item.Box.rect.bottom=NULL;
}
bool a=CollsionCheckBox(item.Box.rect,myChar.Attack.rect);
if(a==TRUE)
{//
int b=rand()%3+1;
myChar.setCharactorChange(b);
item.Box.rife=FALSE;
}
if(myChar.Attack.fire==TRUE)
{
myChar.Attack.rect.left=myChar.Attack.x;
myChar.Attack.rect.top=myChar.Attack.y;
myChar.Attack.rect.right=myChar.Attack.x+120;
myChar.Attack.rect.bottom=myChar.Attack.y+100;
}else if(myChar.Attack.fire==FALSE)
{
a=FALSE;
myChar.Attack.rect.left=NULL;
myChar.Attack.rect.top=NULL;
myChar.Attack.rect.right=NULL;
myChar.Attack.rect.bottom=NULL;
}
현재 구현하려는 소스는 캐릭터가 아이템 상자를 없앴을때 캐릭터가 변하는 형식으로 구현하는중인데요
일단 박스를 없애면 캐릭터가 변하는 것까지 되는데 문제는 공격키만 누르면 캐릭터가 계속 바뀌는건데요
분명 캐릭터 충돌박스는 키를 누르지 않았을 경우에는 생기지 않게 했고
아이템 박스도 마찬가지로 라이프라는 것을 이용해서 FALSE 일 경우 널이 되게 했는데도 계속
충돌 체크 함수가 TRUE로 리턴해버리는 겁니다
해결법좀 알려주시면 감사하겠습니다.(위치문제인것같은데)
참고로
BOOL CollsionCheckBox(const RECT& a,const RECT& b)
{
if(a.left<=b.right&&a.right>=b.left&&a.bottom>=b.top&&a.top<=b.bottom)
return TRUE;
return FALSE;
}이런식으로 구현햇구요
이건 번외 질문이지만 bool a=CollsionCheckBox(item.Box.rect,myChar.Attack.rect); 이 부분을 맨 위로 올리면 a값이 트루가 되더군요
왜그런걸까요?
else if(item.Box.rife=FALSE) 뭔가 이상하지않냐
아하 그렇군요 하지만 ==으로 바꿔보았는데 똑같네요 오히려 아이템이 사라지는 순간 계속 바뀌네요
rife라길래 뭔지 한참 생각했네 -_-; life 모르냐?
그리고 로직이 잘못된것 같다. 캐릭터가 발사중이지 않고 박스와 충돌했을때 아이템을 먹어야되는거 같은데.
값으로서의 0은 그냥 0이라고 써라 NULL은 포인터가 아무것도 포인팅하지 않은 상태를 의미하려고 만들어놨으니
값이 null이면 예외상황 발생하지 않나 -_-
사각형 a,b를 어느 포지션에 초기화했는지에 대한 정보도 없고....그것부터 좀
사각형 a안에 b가 있어야 true가 되는 함수같은뎅..