javascript - 如何在 Phaser 3 中检测图形和 Sprite 之间的碰撞?
问题描述
在我的游戏中,我想实现一种限制玩家区域的范围类型的功能。我试图绘制一个图形圆圈并为其分配物理属性。然后我设置精灵和图形之间的碰撞检测。该代码未显示任何错误,但未检测到冲突。我按照以下教程进行操作。
解决方案
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>
推荐阅读
- string - 如何将字符串列表:'k:v',第一个字符串只有一个值,导入字典
- c# - 如果 BindingList 中的元素在 WPF ViewModel 上发生更改,则引发事件
- xml - 如何使用 OfficeJS 或 ExcelJS 将 XML 数据导入 Excel
- apache-kafka-streams - 卡夫卡流自我加入更新流时间
- python - 为什么多个进程会减慢python包导入速度?
- tensorflow - 安装 TensorFlow 对象检测 API - 'cp' 错误
- autodesk-forge - Forge 教程:查看 BIM360 和 Fusion 模型,我对凭据的空引用是否会导致 index.html 未填充?
- php - 在创建 Laravel Homestead VM(Vagrant) 时,有没有更好的方法来添加 grpc 扩展?
- python - Qt Designer 在运行时显示不同的输出和 Python 文件显示不同的输出
- postgresql - Timescaledb 上的索引