Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | HarryCourt | |
Old Version | Published before Godot 3 was released. |
The script is supposed to spawn a node once “Q” or “E” is pressed, but it doesn’t do that. What is the problem?
There are two scripts to this, one that might work better than the other.
Gunscript V1:
extends Position2D
export (PackedScene) var spawnScene
onready var spawnReference = load(spawnScene.get_path())
onready var sprite = get_tree().get_root().get_node("World/Player/CollisionShape2D/PlayerSprite")
onready var sound = get_parent().get_node("World/Player/BulletSpawn/Bullet/Sound")#/Sound").get("Shoot")
#var bullet = self
var velocity = Vector2()
var speed = 1.25
var ammo = 12
var canShoot = true
export var BulletSpeed = 1500.0
export var Smoothness = 0.2
func _ready():
set_fixed_process(true)
#self.add_collision_exception_with(PhysicsBody)
func _fixed_process(delta):
var spawnInstance = spawnReference.instance()
var shootleft = Input.is_action_pressed("ui_shootleft")
var shootright = Input.is_action_pressed("ui_shootright")
if shootleft and not pressed:
get_parent().add_child(spawnInstance)
sprite.set_flip_h(true)
ammo -= 1
elif shootleft and not pressed:
get_parent().add_child(spawnInstance)
sprite.set_flip_h(false)
ammo -= 1
pressed = shootleft && shootright
Gunscript V2:
extends Position2D
export (PackedScene) var spawnScene
onready var spawnReference = load(spawnScene.get_path())
onready var sprite = get_tree().get_root().get_node("World/Player/CollisionShape2D/PlayerSprite")
onready var sound = get_parent().get_node("World/Player/BulletSpawn/Bullet/Sound")#/Sound").get("Shoot")
#var bullet = self
var velocity = Vector2()
var speed = 1.25
var ammo = 12
var canShoot = true
export var BulletSpeed = 1500.0
export var Smoothness = 0.2
func _ready():
set_fixed_process(true)
#self.add_collision_exception_with(PhysicsBody)
#func _fixed_process(delta):
func _input(event):
var spawnInstance = spawnReference.instance()
var direction = 3.0
if event.type == InputEvent.KEY:
var key = event.scancode
var pressed = event.is_pressed()
var echo = event.is_echo()
if key == KEY_Q and pressed and not echo:
get_parent().add_child(spawnInstance)
sprite.set_flip_h(true)
ammo -= 1
elif key == KEY_E and pressed and not echo:
get_parent().add_child(spawnInstance)
sprite.set_flip_h(false)
ammo -= 1