我正在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°,子弹会变快。
答案 0 :(得分:0)
您应该在方向上添加.normalized()
-这样可以使分量x和y相加为1,但要保持正确的比率。这意味着方向将保持与速度的乘数不变,但仍然给出正确的方向