Как обнаружить столкновение между графикой и Sprite в Phaser 3? - PullRequest
0 голосов
/ 13 мая 2019

В моей игре я хочу реализовать функцию, которая бы ограничивала зону игроков.Я попытался нарисовать графический круг и присвоить ему физические свойства.Затем я настраиваю обнаружение столкновений между спрайтом и графикой.Код не показывает ошибок, но столкновение не обнаружено.Я следовал следующему уроку.

Графика и Sprite

1 Ответ

2 голосов
/ 13 мая 2019

var config = {
    type: Phaser.AUTO,
    parent: 'phaser-example',
    loader: {
      baseURL: 'https://cdn.jsdelivr.net/gh/samme/phaser-examples-assets@v2.0.0/assets/',
      crossOrigin: 'anonymous'
    },
    width: 800,
    height: 600,
    physics: {
      default: 'arcade'
  },
  scene: {
    preload: preload,
    create: create,
    update:update
  }
};

var game = new Phaser.Game(config);
var player;

function preload()
{
  this.load.image('dude', 'sprites/phaser-dude.png')
}

function create ()
{
  player = this.physics.add.sprite(100, 100, 'dude');
  player.setCollideWorldBounds(true);
  
  var graphics = this.add.graphics({ fillStyle: { color: 0xff0000 } });
  var circle = new Phaser.Geom.Circle(50, 50, 25);
  graphics.fillCircleShape(circle);
  this.physics.add.existing(graphics);
  
  cursors = this.input.keyboard.createCursorKeys();
  
  this.physics.add.collider(player, graphics);

}

function update()
{
  if (cursors.left.isDown)
  {
      player.setVelocityX(-160);
  }
  else if (cursors.right.isDown)
  {
      player.setVelocityX(160);
  }
  else if (cursors.down.isDown)
  {
      player.setVelocityY(160);

  } 
  else if (cursors.up.isDown)
  {
      player.setVelocityY(-160);
  }
}
<script src="//cdn.jsdelivr.net/npm/phaser@3.17.0/dist/phaser.min.js"></script>
...