堆棧溢出的好朋友 我今天在你面前展示了一個(不是很好)的cocos2d問題。如何在CCMoveTo過程中連續檢查瓷磚貼圖中的衝突
如何在動作中檢查衝突而不是檢查目標磁貼? 我正在使用具有可以拼接的圖塊的元層的地圖。下面的代碼在我點擊可碰撞的瓷磚時起作用,但當我點擊它時,不會發生,如果發生這種情況,他會直接走過去。
目前,我檢測碰撞與此代碼:
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
[_player stopAllActions];
CGPoint touchLocation = [touch locationInView:touch.view];
touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation];
touchLocation = [self convertToNodeSpace:touchLocation];
CGPoint playerPos = _player.position;
CGPoint diff = ccpSub(touchLocation, playerPos);
int diffx = diff.x;
int diffy = diff.y;
int adiffx = diffx/24;
int adiffy = diffy/24; //Porque my tile size is 24
if (abs(diff.x) > abs(diff.y)) {
if (diff.x > 0) {
playerPos.x = playerPos.x + adiffx * 24;
} else {
playerPos.x = playerPos.x + adiffx * 24;
}
} else {
if (diff.y > 0) {
playerPos.y = playerPos.y + adiffy * 24;
}else{
playerPos.y = playerPos.y + adiffy * 24;
}
}
[self setPlayerPosition:playerPos];
}
我試圖
[self schedule:@selector(setPlayerPosition:) interval:0.5];
沒有任何的運氣:
-(void)setPlayerPosition:(CGPoint)position {
CGPoint tileCoord = [self tileCoordForPosition:position];
int tileGid = [_meta tileGIDAt:tileCoord];
if (tileGid) {
NSDictionary *properties = [_tileMap propertiesForGID:tileGid];
if (properties) {
NSString *collision = properties[@"Collidable"];
if (collision && [collision isEqualToString:@"True"]) {
return;
}
}
}
float speed = 10;
CGPoint currentPlayerPos = _player.position;
CGPoint newPlayerPos = position;
double PlayerPosDifference = ccpDistance(currentPlayerPos, newPlayerPos)/24;
int timeToMoveToNewPostition = PlayerPosDifference/speed;
id moveTo = [CCMoveTo actionWithDuration:timeToMoveToNewPostition position:position];
[_player runAction:moveTo];
//_player.position = position;
}
順便說一句,這會從這種方法稱爲,剛剛在這個應用程序即刻崩潰
NSAssert(pos.x < _layerSize.width && pos.y < _layerSize.height && pos.x >=0 && pos.y >=0, @"TMXLayer: invalid position");
我真的不能責怪它崩潰在那裏。
CCMoveTo
正在運行時,如何經常檢查與可碰撞元瓷磚的碰撞?
你只檢查在觸摸的位置的瓷磚。你是否維護所有瓷磚陣列?如果是這樣,那麼你可以安排一個「碰撞檢測器」方法,主動檢查玩家和所有方塊之間的碰撞。 – 2013-04-25 16:05:42
不,我不,因爲我不知道如何:D你能否賜教我,偉大的@SmugbitStudios – 2013-04-25 17:14:50