bullet hell test
This commit is contained in:
parent
52c5f20d3a
commit
92e138f163
5 changed files with 60 additions and 21 deletions
|
@ -1,9 +1,12 @@
|
||||||
extends Area2D
|
extends Area2D
|
||||||
var velocity: Vector2 = Vector2()
|
var velocity: Vector2 = Vector2()
|
||||||
|
var direction
|
||||||
|
var speed = 100
|
||||||
|
var btype
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
pass # Replace with function body.
|
add_to_group(btype)
|
||||||
|
#pass # Replace with function body.
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
@ -11,10 +14,14 @@ func _process(delta):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
|
if direction == null:
|
||||||
position += velocity * delta
|
position += velocity * delta
|
||||||
|
else:
|
||||||
|
position += speed * delta * direction
|
||||||
|
|
||||||
|
|
||||||
func _on_body_entered(body):
|
func _on_body_entered(body):
|
||||||
|
if !body.is_in_group(btype):
|
||||||
#if body.is_in_group("players"):
|
#if body.is_in_group("players"):
|
||||||
# Global.live = 2
|
# Global.live = 2
|
||||||
#elif body.is_in_group("enemies"):
|
#elif body.is_in_group("enemies"):
|
||||||
|
@ -26,3 +33,9 @@ func _on_body_entered(body):
|
||||||
|
|
||||||
func _on_screen_exited():
|
func _on_screen_exited():
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_area_entered(area):
|
||||||
|
if !area.is_in_group(btype):
|
||||||
|
queue_free()
|
||||||
|
#pass # Replace with function body.
|
||||||
|
|
|
@ -18,4 +18,5 @@ shape = SubResource("RectangleShape2D_g125y")
|
||||||
|
|
||||||
[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."]
|
[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."]
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
|
||||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
extends CharacterBody2D
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
var theta: float = 0.0
|
||||||
|
@export_range(0,2*PI) var alpha: float = 1.5
|
||||||
|
var bullet = load("res://sprites/common/bullet/fireball.tscn")
|
||||||
|
|
||||||
const SPEED = 300.0
|
const SPEED = 300.0
|
||||||
const JUMP_VELOCITY = -400.0
|
const JUMP_VELOCITY = -400.0
|
||||||
var angle = 2
|
var vangle = 2
|
||||||
|
|
||||||
|
func get_vector(angle):
|
||||||
|
theta = angle + alpha
|
||||||
|
return Vector2(cos(theta),sin(theta))
|
||||||
|
|
||||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
||||||
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
||||||
|
@ -23,29 +30,40 @@ func _physics_process(delta):
|
||||||
#position += velocity
|
#position += velocity
|
||||||
position += velocity
|
position += velocity
|
||||||
if velocity.y > 0.3:
|
if velocity.y > 0.3:
|
||||||
angle = 2
|
vangle = 2
|
||||||
elif velocity.y < -0.3:
|
elif velocity.y < -0.3:
|
||||||
angle = 0
|
vangle = 0
|
||||||
elif velocity.x > 0.3:
|
elif velocity.x > 0.3:
|
||||||
angle = 1
|
vangle = 1
|
||||||
elif velocity.x < -0.3:
|
elif velocity.x < -0.3:
|
||||||
angle = 3
|
vangle = 3
|
||||||
if velocity.y != 0 || velocity.x != 0:
|
if velocity.y != 0 || velocity.x != 0:
|
||||||
if angle == 0:
|
if vangle == 0:
|
||||||
anim.play("nwalk")
|
anim.play("nwalk")
|
||||||
elif angle == 1:
|
elif vangle == 1:
|
||||||
anim.play("ewalk")
|
anim.play("ewalk")
|
||||||
elif angle == 3:
|
elif vangle == 3:
|
||||||
anim.play("wwalk")
|
anim.play("wwalk")
|
||||||
else:
|
else:
|
||||||
anim.play("swalk")
|
anim.play("swalk")
|
||||||
else:
|
else:
|
||||||
if angle == 0:
|
if vangle == 0:
|
||||||
anim.play("nidle")
|
anim.play("nidle")
|
||||||
elif angle == 1:
|
elif vangle == 1:
|
||||||
anim.play("eidle")
|
anim.play("eidle")
|
||||||
elif angle == 3:
|
elif vangle == 3:
|
||||||
anim.play("widle")
|
anim.play("widle")
|
||||||
else:
|
else:
|
||||||
anim.play("sidle")
|
anim.play("sidle")
|
||||||
#move_and_slide()
|
#move_and_slide()
|
||||||
|
func shoot(angle):
|
||||||
|
var new_bullet = bullet.instantiate()
|
||||||
|
new_bullet.position = Vector2(position.x, position.y)
|
||||||
|
new_bullet.direction = get_vector(angle)
|
||||||
|
new_bullet.btype = "boss"
|
||||||
|
get_parent().call_deferred("add_child",new_bullet)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_speed_timeout():
|
||||||
|
if Global.live == 1:
|
||||||
|
shoot(theta)
|
||||||
|
|
|
@ -178,3 +178,9 @@ shape = SubResource("RectangleShape2D_dj8gt")
|
||||||
libraries = {
|
libraries = {
|
||||||
"": SubResource("AnimationLibrary_mh65y")
|
"": SubResource("AnimationLibrary_mh65y")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="Speed" type="Timer" parent="."]
|
||||||
|
wait_time = 0.1
|
||||||
|
autostart = true
|
||||||
|
|
||||||
|
[connection signal="timeout" from="Speed" to="." method="_on_speed_timeout"]
|
||||||
|
|
|
@ -76,14 +76,15 @@ func _input(event):
|
||||||
bullet = load(Global.pbbullets[Global.dparty[Global.dcpchar]])
|
bullet = load(Global.pbbullets[Global.dparty[Global.dcpchar]])
|
||||||
else:
|
else:
|
||||||
bullet = load(Global.pbbullets[Global.party[Global.cpchar]])
|
bullet = load(Global.pbbullets[Global.party[Global.cpchar]])
|
||||||
var new_bullet = bullet.instantiate()
|
var new_pbullet = bullet.instantiate()
|
||||||
new_bullet.velocity = Vector2(0, -500).rotated(deg_to_rad(angle * 90))
|
new_pbullet.btype = "players"
|
||||||
|
new_pbullet.velocity = Vector2(0, -500).rotated(deg_to_rad(angle * 90))
|
||||||
var rposition = Vector2(0, -96).rotated(deg_to_rad(angle * 90))
|
var rposition = Vector2(0, -96).rotated(deg_to_rad(angle * 90))
|
||||||
if angle == 2:
|
if angle == 2:
|
||||||
new_bullet.position = Vector2(position.x + rposition.x, position.y + rposition.y + 98)
|
new_pbullet.position = Vector2(position.x + rposition.x, position.y + rposition.y + 98)
|
||||||
else:
|
else:
|
||||||
new_bullet.position = Vector2(position.x + rposition.x, position.y + rposition.y)
|
new_pbullet.position = Vector2(position.x + rposition.x, position.y + rposition.y)
|
||||||
if new_bullet.position.x > 0 && new_bullet.position.y > 0 && new_bullet.position.x < 1280 && new_bullet.position.y < 720:
|
if new_pbullet.position.x > 0 && new_pbullet.position.y > 0 && new_pbullet.position.x < 1280 && new_pbullet.position.y < 720:
|
||||||
get_parent().add_child(new_bullet)
|
get_parent().add_child(new_pbullet)
|
||||||
elif Input.is_action_just_released("shoot") && bpress:
|
elif Input.is_action_just_released("shoot") && bpress:
|
||||||
bpress = false
|
bpress = false
|
||||||
|
|
Loading…
Reference in a new issue