Attempted Pew
This commit is contained in:
parent
78bcdb0d6f
commit
41fc5de4d3
|
|
@ -94,6 +94,11 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://lib/classes/movement_state_receiver.gd"
|
"path": "res://lib/classes/movement_state_receiver.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Area2D",
|
||||||
|
"class": "Projectile",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://src/classes/projectile.gd"
|
||||||
|
}, {
|
||||||
"base": "Resource",
|
"base": "Resource",
|
||||||
"class": "SE_StateFrame",
|
"class": "SE_StateFrame",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
|
@ -152,6 +157,7 @@ _global_script_class_icons={
|
||||||
"Modifier_Receiver": "",
|
"Modifier_Receiver": "",
|
||||||
"MovementComponent": "",
|
"MovementComponent": "",
|
||||||
"Movement_StateReceiver": "",
|
"Movement_StateReceiver": "",
|
||||||
|
"Projectile": "",
|
||||||
"SE_StateFrame": "",
|
"SE_StateFrame": "",
|
||||||
"State": "",
|
"State": "",
|
||||||
"StateAnimatedActor": "",
|
"StateAnimatedActor": "",
|
||||||
|
|
|
||||||
64
src/PewMachine.gd
Normal file
64
src/PewMachine.gd
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
extends Position2D
|
||||||
|
## Represents a weapon that spawns and shoots bullets.
|
||||||
|
## The Cooldown timer controls the cooldown duration between shots.
|
||||||
|
|
||||||
|
export var scene_path :Resource
|
||||||
|
export var pew_cooldown_time :float = 1.0
|
||||||
|
|
||||||
|
const BULLET_VELOCITY = 350
|
||||||
|
var projectile :Projectile #preload("res://src/Projectile.tscn")
|
||||||
|
|
||||||
|
#onready var sound_shoot = $Shoot
|
||||||
|
onready var timer = Timer.new()
|
||||||
|
onready var offset_position = Vector2(transform.origin.x, transform.origin.y)
|
||||||
|
|
||||||
|
## I don't know what type this would be
|
||||||
|
var loaded_scene
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
#projectile = load(scene_path.resource_path)
|
||||||
|
loaded_scene = load(scene_path.resource_path)
|
||||||
|
timer.autostart = false
|
||||||
|
timer.wait_time = pew_cooldown_time
|
||||||
|
timer.one_shot = true
|
||||||
|
timer.autostart = false
|
||||||
|
add_child(timer)
|
||||||
|
|
||||||
|
|
||||||
|
# This method is only called by Player.gd.
|
||||||
|
func shoot(direction = 1):
|
||||||
|
#self.set_position(Vector2(position.x * direction, position.y))
|
||||||
|
#transform.x = transform.x * direction
|
||||||
|
#Transform2D.FLIP_Y
|
||||||
|
#transform.origin.x = transform.origin.x * direction
|
||||||
|
# if direction < 0:
|
||||||
|
# var t = Transform2D()
|
||||||
|
# # Translation
|
||||||
|
# t.origin = Vector2(position.x * -1, position.y)
|
||||||
|
# transform = t
|
||||||
|
# elif direction > 0:
|
||||||
|
# var t = Transform2D()
|
||||||
|
# # Translation
|
||||||
|
# t.origin = Vector2(position.x, position.y)
|
||||||
|
# transform = t
|
||||||
|
|
||||||
|
print("Fire Debug: ", direction, " Gun position: ", position, transform.origin)
|
||||||
|
# position.x = position.x * direction #shifting position before fire was unreliable
|
||||||
|
if not timer.is_stopped():
|
||||||
|
return false
|
||||||
|
var bullet = loaded_scene.instance()
|
||||||
|
# if (direction > 0):
|
||||||
|
# bullet.global_position = global_position
|
||||||
|
# else:
|
||||||
|
# bullet.global_position = global_position - Vector2(position.x * 2, 0)
|
||||||
|
if bullet is Projectile:
|
||||||
|
bullet.global_position = global_position
|
||||||
|
|
||||||
|
#bullet.linear_velocity = Vector2(direction * BULLET_VELOCITY, 0)
|
||||||
|
|
||||||
|
bullet.set_as_toplevel(true)
|
||||||
|
add_child(bullet)
|
||||||
|
# sound_shoot.play()
|
||||||
|
timer.start()
|
||||||
|
return true
|
||||||
|
|
||||||
|
|
@ -4,6 +4,8 @@ var parent_request_state_change :FuncRef
|
||||||
|
|
||||||
var player_number: int = 1
|
var player_number: int = 1
|
||||||
|
|
||||||
|
onready var pew_machine = $"%PewMachine"
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
var state_ref :State
|
var state_ref :State
|
||||||
var state_name :String
|
var state_name :String
|
||||||
|
|
@ -163,6 +165,10 @@ func attack_secondary():
|
||||||
|
|
||||||
|
|
||||||
func _state_process_physics_attack_shoot():
|
func _state_process_physics_attack_shoot():
|
||||||
|
|
||||||
|
if pew_machine.timer.time_left == 0:
|
||||||
|
pew_machine.shoot()
|
||||||
|
|
||||||
if current_state.animation_finished == true:
|
if current_state.animation_finished == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=34 format=2]
|
[gd_scene load_steps=36 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://lib/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://lib/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://assets/actors/players/playerE/PlayerE_SpriteFrames.tres" type="SpriteFrames" id=2]
|
[ext_resource path="res://assets/actors/players/playerE/PlayerE_SpriteFrames.tres" type="SpriteFrames" id=2]
|
||||||
|
|
@ -27,6 +27,8 @@
|
||||||
[ext_resource path="res://assets_tmp/SE/tap.wav" type="AudioStream" id=25]
|
[ext_resource path="res://assets_tmp/SE/tap.wav" type="AudioStream" id=25]
|
||||||
[ext_resource path="res://assets_tmp/SE/land.wav" type="AudioStream" id=26]
|
[ext_resource path="res://assets_tmp/SE/land.wav" type="AudioStream" id=26]
|
||||||
[ext_resource path="res://src/actors/players/playerE/states/attack_punch.tres" type="Resource" id=27]
|
[ext_resource path="res://src/actors/players/playerE/states/attack_punch.tres" type="Resource" id=27]
|
||||||
|
[ext_resource path="res://src/PewMachine.gd" type="Script" id=28]
|
||||||
|
[ext_resource path="res://src/projectiles/MushroomPew.tscn" type="PackedScene" id=29]
|
||||||
|
|
||||||
[sub_resource type="Resource" id=3]
|
[sub_resource type="Resource" id=3]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
|
|
@ -145,3 +147,9 @@ shape = SubResource( 2 )
|
||||||
[node name="Interactable_Receiver" type="Node" parent="." index="10"]
|
[node name="Interactable_Receiver" type="Node" parent="." index="10"]
|
||||||
script = ExtResource( 21 )
|
script = ExtResource( 21 )
|
||||||
interactable_parent_callback = "touch_the_thing"
|
interactable_parent_callback = "touch_the_thing"
|
||||||
|
|
||||||
|
[node name="PewMachine" type="Position2D" parent="." index="11"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2( 10, 1.36422e-12 )
|
||||||
|
script = ExtResource( 28 )
|
||||||
|
scene_path = ExtResource( 29 )
|
||||||
|
|
|
||||||
30
src/classes/projectile.gd
Normal file
30
src/classes/projectile.gd
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
class_name Projectile
|
||||||
|
extends Area2D
|
||||||
|
|
||||||
|
|
||||||
|
# Declare member variables here. Examples:
|
||||||
|
# var a = 2
|
||||||
|
# var b = "text"
|
||||||
|
|
||||||
|
var velocity_pps :float = 60
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready():
|
||||||
|
pass # Replace with function body.
|
||||||
|
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
func _process(delta):
|
||||||
|
rotate(delta * 10)
|
||||||
|
position += Vector2(velocity_pps * delta, velocity_pps * delta)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_body_entered(body):
|
||||||
|
var colliding_node = body
|
||||||
|
if colliding_node.has_node("Projectile_Receiver"):
|
||||||
|
colliding_node.get_node("Projectile_Receiver").register_interactable(self)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_area_entered(area):
|
||||||
|
pass # Replace with function body.
|
||||||
16
src/projectiles/MushroomPew.tscn
Normal file
16
src/projectiles/MushroomPew.tscn
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/templates/projectile_template.tscn" type="PackedScene" id=1]
|
||||||
|
[ext_resource path="res://assets/items/mushroom_icon.png" type="Texture" id=2]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id=1]
|
||||||
|
radius = 6.0
|
||||||
|
height = 2.0
|
||||||
|
|
||||||
|
[node name="MushroomPew" instance=ExtResource( 1 )]
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="0"]
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[node name="Sprite" type="Sprite" parent="." index="1"]
|
||||||
|
texture = ExtResource( 2 )
|
||||||
10
src/templates/projectile_template.tscn
Normal file
10
src/templates/projectile_template.tscn
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/classes/projectile.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="Projectile_Template" type="Area2D"]
|
||||||
|
monitorable = false
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
|
||||||
|
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
Loading…
Reference in New Issue
Block a user