0

我正在 Godot 3.1 中制作一个自上而下的 2D 游戏。在玩家向其注视的地方射击子弹的地方。

我正在使用 Godot 3.1 和 Gdscript。我有一个bullet包含以下节点的场景

Area2D
    > Sprite
    > CollisionShape2D
    > Timer

使用此代码,我使子弹移动

func shoot():
    if canShoot:
        canShoot = false
        var current_rotation = Vector2(1, 0).rotated($".".global_rotation)
        emit_signal('shoot', Bullet, $".".global_position, current_rotation)

func _bulletShoot(Bullet, _position, _direction):
    var bulletInstance = Bullet.instance()
    add_child(bulletInstance)
    bulletInstance.start(_position, _direction)

func start(_position, _direction):
    direction = _direction
    position = _position
    rotation = _position.angle()
    velocity = _position * speed

func _physics_process(delta):
    position += velocity * delta * direction

但是速度并不总是相同的,具体取决于我拍摄的方向。有没有办法解决它?

我希望子弹以恒定的速度朝着它发射的方向前进,而不会改变它的发射方向。

发生的情况是,如果我将它指向 0°,子弹会变慢,如果我将它指向 180°,它会更快。

4

1 回答 1

0

您应该添加.normalized()到方向 - 这将使组件 x 和 y 添加到 1,但保持正确的比率。这意味着方向将保持速度的恒定乘数,但仍会给出正确的方向

于 2019-08-30T15:04:57.407 回答