extends KinematicBody2D # member variables here, example: # var a=2 # var b="textvar" 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(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() var bullet = preload("res://shoot.scn").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*0.1): var angle = atan2(abs(speed.x),speed.y) next_mirror = speed.x>0 if (angle