gpt4 book ai didi

javascript - 移相器,流体扫射(对 Angular 线输入)

转载 作者:行者123 更新时间:2023-12-03 07:41:34 25 4
gpt4 key购买 nike

我一直在玩弄一个 Sprite ,试图让它以我期望的方式扫射 - 毁灭战士风格。

所以问题是我可以设置 Sprite 的 Angular ,并且我使用 velocityFromRotation 相对于当前 Angular 向上、向下、向左和向右移动它。到目前为止,非常可爱。

问题是我无法对 Angular 移动,也就是说,我需要能够相对于 Sprite 的 Angular 同时向上和向左移动。我对每个运动(上、下、左、右)都有一个函数 - 并且由于所有运动都使用 velocityFromRotation,所以最新按下的键将覆盖第一个运动。

据推测,我也可以简单地为每个对 Angular 线创建函数,尽管我不完全确定要传递给 velocityFromRotation 方法来实现这一点 - 但即使这有效,然后它可能会阻止我使用模拟输入类型,因为对 Angular 线逻辑将被硬编码。我没有使用模拟输入,但我正在尝试将我的预制件构建为尽可能“直接”可重用。

这是我当前的代码:

Ship.prototype.moveForward = function() {
// Move the player up
this.game.physics.arcade.velocityFromAngle(this.angle - 90, this.speed, this.body.velocity);
}

Ship.prototype.moveBackward = function() {
this.game.physics.arcade.velocityFromAngle(this.angle + 90, this.speed, this.body.velocity);
}

Ship.prototype.bankLeft = function() {
// Move the player left
this.game.physics.arcade.velocityFromAngle(this.angle + 180, this.speed, this.body.velocity);
}

Ship.prototype.bankRight = function() {
// Move the player left
this.game.physics.arcade.velocityFromAngle(this.angle, this.speed, this.body.velocity);
}

最佳答案

没关系,我找到了。

对我来说,诀窍是记录 Sprite 当前正在做什么,并在函数中进行检查以手动调整 Angular 。

因此,我在更新函数中存储了一些变量 - 它们在各种运动函数中被覆盖:

this.movement.movingForward     = false;
this.movement.movingBackward = false;
this.movement.moving = false;

然后我的运动函数如下所示:

// Player movement
Ship.prototype.moveForward = function() {
// Move the player up
this.game.physics.arcade.velocityFromAngle(this.angle - 90, this.speed, this.body.velocity);
this.movement.moving = true;
this.movement.movingForward = true;
}

Ship.prototype.moveBackward = function() {
// Move the player down
this.game.physics.arcade.velocityFromAngle(this.angle + 90, this.speed, this.body.velocity);
this.movement.moving = true;
this.movement.movingBackward = true;
}

Ship.prototype.bankLeft = function() {
// Move the player left
this.game.physics.arcade.velocityFromAngle(this.angle + 180 - ((this.movement.movingForward ? -45 : 0) + (this.movement.movingBackward ? 45 : 0)), this.speed, this.body.velocity);
this.movement.moving = true;
this.movement.bankingLeft = true;
}

Ship.prototype.bankRight = function() {
// Move the player left
this.game.physics.arcade.velocityFromAngle(this.angle + ((this.movement.movingForward ? -45 : 0) + (this.movement.movingBackward ? 45 : 0)), this.speed, this.body.velocity);
this.movement.moving = true;
this.movement.bankingRight = true;
}

如果你想知道为什么我将 Angular 调整 90 度,那是因为 Sprite 朝上,而 Phaser 似乎将 0 度视为指向右侧。

关于javascript - 移相器,流体扫射(对 Angular 线输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com