Public.gd (1123B)
1 extends RigidBody2D 2 3 export var max_speed = 20.0 4 export var force = 20.0 5 6 var pnj_frames = [preload("res://PNJ1frames.tres"), preload("res://PNJ2frames.tres"), preload("res://PNJ3frames.tres")] 7 8 var type = -1 9 10 func init(): 11 max_speed = rand_range(0, max_speed) 12 13 if position == Vector2(): 14 var vp_size = get_viewport_rect().size 15 position.x = rand_range(vp_size.x/5, vp_size.x-30.0) 16 position.y = rand_range(30.0, vp_size.y-30.0) 17 18 if type == -1: 19 type = randi()%3 20 21 $Sprite.frames = pnj_frames[type] 22 23 func _ready(): 24 init() 25 26 func _process(_delta): 27 $Sprite.rotation = -rotation 28 29 var direction = int(rad2deg(linear_velocity.angle())+360+45)%360/90 30 if direction == 0: 31 $Sprite.animation = "right" 32 elif direction == 1: 33 $Sprite.animation = "down" 34 elif direction == 2: 35 $Sprite.animation = "left" 36 elif direction == 3: 37 $Sprite.animation = "up" 38 39 func _integrate_forces(state): 40 #print_debug(state.linear_velocity.x) 41 var direction = get_node("../President").position - position 42 if state.linear_velocity.length() < max_speed: 43 applied_force = direction.normalized() * force 44 else: 45 applied_force = Vector2()