Game Development Reference
In-Depth Information
41 end
42 end
43 end
44
45 def distance_to_target
46
Utils . distance_between(
@object . x, @object . y, @target . x, @target . y)
47
48 end
49
50
51 def should_shoot?
52 rand * @aggressiveness > 0.5
53 end
54
55 def can_make_new_decision?
56 now = Gosu . milliseconds
57 if now - ( @last_decision ||= 0 ) > DECISION_DELAY
58 @last_decision = now
59 true
60 end
61 end
62
63 def adjust_desired_angle
64
@desired_gun_angle = if @target
Utils . angle_between(
65
@object . x, @object . y, @target . x, @target . y)
66
67 else
68 @object . direction
69 end
70 end
71
72 def change_target (new_target)
73 @target = new_target
74 adjust_desired_angle
75 end
76
77 def adjust_gun_angle
78 actual = @object . gun_angle
79 desired = @desired_gun_angle
80 if actual > desired
81 if actual - desired > 180 # 0 -> 360 fix
82 @object . gun_angle = (actual + @retarget_speed ) % 360
83 if @object . gun_angle < desired
84 @object . gun_angle = desired # damp
85 end
86 else
Search WWH ::




Custom Search