diff options
Diffstat (limited to 'demos/2d/isometric_light/cubio.gd')
-rw-r--r-- | demos/2d/isometric_light/cubio.gd | 117 |
1 files changed, 53 insertions, 64 deletions
diff --git a/demos/2d/isometric_light/cubio.gd b/demos/2d/isometric_light/cubio.gd index 30c766936c..508cd3728c 100644 --- a/demos/2d/isometric_light/cubio.gd +++ b/demos/2d/isometric_light/cubio.gd @@ -1,96 +1,85 @@ extends KinematicBody2D -# member variables here, example: -# var a=2 -# var b="textvar" - +# 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 +const ACCEL = 5.0 +const VSCALE = 0.5 +const SHOOT_INTERVAL = 0.3 + +var speed = Vector2() +var current_anim = "" +var current_mirror = false -var speed=Vector2() -var current_anim="" -var current_mirror=false +var shoot_countdown = 0 -var shoot_countdown=0 -func _input(ev): - if (ev.type==InputEvent.MOUSE_BUTTON and ev.button_index==1 and ev.pressed and shoot_countdown<=0): - var pos = get_canvas_transform().affine_inverse() * ev.pos - var dir = (pos-get_global_pos()).normalized() +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.scn").instance() - bullet.advance_dir=dir - bullet.set_pos( get_global_pos() + dir * 60 ) + bullet.advance_dir = dir + bullet.set_pos(get_global_pos() + dir*60) get_parent().add_child(bullet) - shoot_countdown=SHOOT_INTERVAL - - - + shoot_countdown = SHOOT_INTERVAL + func _fixed_process(delta): - - shoot_countdown-=delta + shoot_countdown -= delta var dir = Vector2() if (Input.is_action_pressed("up")): - dir+=Vector2(0,-1) + dir += Vector2(0, -1) if (Input.is_action_pressed("down")): - dir+=Vector2(0,1) + dir += Vector2(0, 1) if (Input.is_action_pressed("left")): - dir+=Vector2(-1,0) + 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) + 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) + motion = n.slide(motion) move(motion) - var next_anim="" - var next_mirror=false + 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) + 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" + 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): + 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 - + current_anim = next_anim + current_mirror = next_mirror func _ready(): - # Initialization here set_fixed_process(true) set_process_input(true) - pass - - |