javascript - Phaser 3 - 使用补间将游戏对象移动到鼠标点击(“点击移动”移动“)
问题描述
所以,我正在使用 Phaser 3 制作一个需要“点击移动”运动的游戏,但我不能使用物理,所以我想改变它并使用补间让玩家移动到点击位置(“点击移动”)。这是我使用的使用物理的代码:
var target = new Phaser.Math.Vector2();
preload(){
this.load.image("image", "assets/image.png");
}
create(){
player = this.physics.add.sprite(400, 350, "image");
this.input.on('pointerup', function (pointer) {
target.x = pointer.x;
target.y = pointer.y;
// Move at 200 px/s:
this.physics.moveToObject(player, target, 200);
}, this);
}
update(){
var distance = Phaser.Math.Distance.Between(player.x, player.y, target.x, target.y);
if (player.body.speed > 0)
{
// 4 is our distance tolerance. The faster it moves, the more tolerance is required.
if (distance < 4)
{
player.body.reset(target.x, target.y);
player.anims.stop();
}
}
}
我尝试这样做(使用补间),它可以工作,但不像我预期的那样,结果与使用物理的第一个代码有很大不同,它移动得更快,并且对象(玩家)不断传送到补间的原始 x 和是的。这是我尝试过的:
var tween;
var target = new Phaser.Math.Vector2();
preload(){
this.load.image("image", "assets/image.png");
}
create(){
player = this.add.sprite(400, 300, "image");
tween = this.tweens.add({
targets: player,
x: 400,
y: 300,
ease: 'Power1',
duration: -1,
paused: true
});
this.input.on('pointerdown', function (pointer) {
target.x = pointer.x
target.y = pointer.y
tween.play();
});
}
update(){
if (tween.isPlaying())
{
tween.updateTo('x', target.x, true);
tween.updateTo('y', target.y, true);
}
}
解决方案
推荐阅读
- return - 如何从 raku sub 返回 2 个哈希?
- java - “线程“主”org.openqa.selenium.WebDriverException 中的异常:断开连接:收到 Inspector.detached 事件”与 Selenium Java
- amazon-web-services - 带有 localstack 的无服务器框架,在哪里查看错误输出
- node.js - 发布到 npm 时如何忽略子 package.json 文件
- javascript - 库应该作为打字稿文件提供吗?
- r - 使用 R 中的 ggplot 在子图中使用多个变量
- c# - 从 JSON 反序列化混合类型的无名数组
- laravel - 我应该以不同的方式命名我的 Laravel 路线吗?
- reporting-services - SSRS 对 expresson 的帮助'请我怎样才能把这个表达式放在 SSRS 表达式中
- python - 使用 openpyxl 在特定点追加