chào mọi người
Em đang làm game snake. Có một chỗ em không fix được. Mong các anh hỗ trợ cho em nhé.
Em code trên cocos và dùng c++
Đây là lỗi của em.
Em mún cho con rắn nó đi xuyên tường và xuất hiện ở phía bên kia. Đây là code của em
void Snake::moveSnake(){
snakeHead->warp();
//cocos2d::log("rotation: %f, x: %f, y: %f", snakeHead->getRotation(), BODY_INTERVAL*sind(snakeHead->getRotation()), BODY_INTERVAL*cosd(snakeHead->getRotation()));
auto move = MoveBy::create((float)moveSpeed / DIVIDER, Vec2(BODY_INTERVAL*sind(snakeHead->getRotation()), BODY_INTERVAL*cosd(snakeHead->getRotation())));
auto end = CallFunc::create(CC_CALLBACK_0(Snake::moveEnd,this));
isMoving = true;
snakeHead->runAction(Sequence::create(move, end, NULL));
for (int i = 1; i < size; i++){
snakeBodyParts.at(i)->warp();
auto move = MoveTo::create((float)moveSpeed / DIVIDER, snakeBodyParts.at(i - 1)->getPosition());
snakeBodyParts.at(i)->runAction(move);
auto rotate = RotateTo::create((float)moveSpeed / DIVIDER, (int)(snakeBodyParts.at(i - 1)->getRotation()) % 360);
snakeBodyParts.at(i)->runAction(rotate);
}
}
trong đó có hàm warp là hàm kiểm tra có đi ra ngoài cửa sổ game ko nếu có thì set position nó lại. Hàm này nó nằm ở file SnakePart.cpp
void SnakePart::warp(){
if (this->getPositionX() < SCREEN_POSITION_LEFT){
this->setPositionX(SCREEN_POSITION_RIGHT);
}
else if (this->getPositionX() > SCREEN_POSITION_RIGHT){
this->setPositionX(SCREEN_POSITION_LEFT);
}
if (this->getPositionY() < SCREEN_POSITION_BOTTOM){
this->setPositionY(SCREEN_POSITION_TOP);
}
else if (this->getPositionY() > SCREEN_POSITION_TOP){
this->setPositionY(SCREEN_POSITION_BOTTOM);
}
}
Mọi thứ tới đó đều ổn cho đến khi em chạy project thì nó bị như này ạ.
Con rắn phải bao gồm 3 hình tròn lúc mới vào game,nó vẫn có đủ ạ và vẫn đi từ trái sang phải
nhưng mấy phần thân của rắn nó di chuyển mọi nơi, trừ phần đầu ra ạ rồi mấy phần thân đó lại di chuyển rất nhanh và di chuyển lại chỗ cũ . Trong hình là cục thứ 3 nó di chuyển mất rồi sau đó nó quay lại chổ cũ. Tại giới hạn chỉ dc post 1 tấm hình nên em không post được tấm 2 3 để các anh hiểu rõ hơn.
Mong các anh giúp ạ