2016-12-07 2 views
1

Phaser.io를 사용하여 간단한 무한 러너 게임을 제작할 계획입니다. enter image description here 라이더가 있고 라이더 개체가 계속 움직입니다. 방해물이 몇 가지 있습니다. 충돌이 발생할 때를 감지하고 싶습니다. 하지만 충돌이나 겹침을 감지 할 수없는 것 같습니다. 도와주세요! Phaser.IO로 충돌을 감지 할 수 없습니다.

내 코드 조각의 일부

은 다음과 같습니다 -

function create() { 
    //obstacles initialization 

    obstacles = game.add.group(); 
    obstacles.enableBody = true; 

    //player initialization 

    player = game.add.sprite(10, 250, 'tuktuk'); game.physics.arcade.enable(player); 
    player.body.bounce.y = 0.2; 
    player.body.gravity.y = 800; 
    player.body.bounce.x = 0.2; 
    player.body.collideWorldBounds = true; 
    player.animations.add('right', [0,1,2], 20, true); 
    create_random_obstacle(); 
    game.physics.arcade.enable(obstacles); 
    game.world.bringToTop(player); 
    game.physics.arcade.overlap(obstacles, player, after_collision, null, null);  
} 

답변

1

의 물리학을 활성화해야 할 수 update(). 매 프레임마다 오버랩을 검사해야하기 때문에.

+0

감사! 나는 이것을 놓치고 있었다. 이제 작동합니다. –

1

난 당신이 또한 플레이어 스프라이트에 물리학을 활성화해야합니다 생각합니다.

game.physics.arcade.enable(player); 

또한, 내 게임에 나는 스프라이트로 overlap의 첫 번째 매개 변수를 설정하고, 두 번째 매개 변수는 그룹입니다. Phaser docs에 따르면 중요하지 않지만 반드시 시도해 볼 수는 있습니다.

+0

감사합니다. 나는 그렇게했다. 나는 그 질문에 그것을 쓰지 않았다. 그것을 수정했습니다. –

2

스프라이트 간의 충돌을 확인하기 전에 먼저 물리를 활성화해야합니다.

game.physics.arcade.overlap(obstacles, player, after_collision, null, null);  

이 될해야 : 당신은

game.physics.startSystem(Phaser.Physics.ARCADE);

에 의해 또한 플레이어 스프라이트 B. 나임의 대답과 함께

game.physics.arcade.enable(player);

+0

감사합니다. 나는 그렇게했다. 나는 그 질문에 그것을 쓰지 않았다. 그것을 수정했습니다. –

관련 문제