diff options
Diffstat (limited to 'demos/2d/isometric_light/cubio.gd')
-rw-r--r-- | demos/2d/isometric_light/cubio.gd | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/demos/2d/isometric_light/cubio.gd b/demos/2d/isometric_light/cubio.gd deleted file mode 100644 index a26d5ae6fb..0000000000 --- a/demos/2d/isometric_light/cubio.gd +++ /dev/null @@ -1,85 +0,0 @@ - -extends KinematicBody2D - -# Member variables -const MAX_SPEED = 300.0 -const IDLE_SPEED = 10.0 -const ACCEL = 5.0 -const VSCALE = 0.5 -const SHOOT_INTERVAL = 0.3 - -var speed = Vector2() -var current_anim = "" -var current_mirror = false - -var shoot_countdown = 0 - - -func _input(event): - if (event.type == InputEvent.MOUSE_BUTTON and event.button_index == 1 and event.pressed and shoot_countdown <= 0): - var pos = get_canvas_transform().affine_inverse()*event.pos - var dir = (pos - get_global_pos()).normalized() - var bullet = preload("res://shoot.tscn").instance() - bullet.advance_dir = dir - bullet.set_pos(get_global_pos() + dir*60) - get_parent().add_child(bullet) - shoot_countdown = SHOOT_INTERVAL - - -func _fixed_process(delta): - shoot_countdown -= delta - var dir = Vector2() - if (Input.is_action_pressed("up")): - dir += Vector2(0, -1) - if (Input.is_action_pressed("down")): - dir += Vector2(0, 1) - if (Input.is_action_pressed("left")): - dir += Vector2(-1, 0) - if (Input.is_action_pressed("right")): - dir += Vector2(1, 0) - - if (dir != Vector2()): - dir = dir.normalized() - speed = speed.linear_interpolate(dir*MAX_SPEED, delta*ACCEL) - var motion = speed*delta - motion.y *= VSCALE - motion = move(motion) - - if (is_colliding()): - var n = get_collision_normal() - motion = n.slide(motion) - move(motion) - - var next_anim = "" - var next_mirror = false - - if (dir == Vector2() and speed.length() < IDLE_SPEED): - next_anim = "idle" - next_mirror = false - elif (speed.length() > IDLE_SPEED*0.1): - var angle = atan2(abs(speed.x), speed.y) - - next_mirror = speed.x > 0 - if (angle < PI/8): - next_anim = "bottom" - next_mirror = false - elif (angle < PI/4 + PI/8): - next_anim = "bottom_left" - elif (angle < PI*2/4 + PI/8): - next_anim = "left" - elif (angle < PI*3/4 + PI/8): - next_anim = "top_left" - else: - next_anim = "top" - next_mirror = false - - if (next_anim != current_anim or next_mirror != current_mirror): - get_node("frames").set_flip_h(next_mirror) - get_node("anim").play(next_anim) - current_anim = next_anim - current_mirror = next_mirror - - -func _ready(): - set_fixed_process(true) - set_process_input(true) |