happy with turret turning
This commit is contained in:
@@ -805,7 +805,7 @@ size = Vector3(0.816284, 0.725159, 0.75531)
|
|||||||
|
|
||||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_gicen"]
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_gicen"]
|
||||||
height = 0.356583
|
height = 0.356583
|
||||||
radius = 0.207031
|
radius = 0.135742
|
||||||
|
|
||||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ycipa"]
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ycipa"]
|
||||||
random_pitch = 1.1
|
random_pitch = 1.1
|
||||||
@@ -886,6 +886,7 @@ metadata/_custom_type_script = "uid://dhxolagi0b5s1"
|
|||||||
[node name="Attack" type="Node" parent="StateMachine" node_paths=PackedStringArray("enemy")]
|
[node name="Attack" type="Node" parent="StateMachine" node_paths=PackedStringArray("enemy")]
|
||||||
script = ExtResource("10_gicen")
|
script = ExtResource("10_gicen")
|
||||||
enemy = NodePath("../..")
|
enemy = NodePath("../..")
|
||||||
|
body_turn_speed = 1.0
|
||||||
|
|
||||||
[node name="Reload" type="Node" parent="StateMachine" node_paths=PackedStringArray("enemy")]
|
[node name="Reload" type="Node" parent="StateMachine" node_paths=PackedStringArray("enemy")]
|
||||||
script = ExtResource("11_ekglj")
|
script = ExtResource("11_ekglj")
|
||||||
|
|||||||
@@ -15,5 +15,5 @@ func Physics_Update(delta):
|
|||||||
|
|
||||||
func update_player_target():
|
func update_player_target():
|
||||||
move_target = enemy.player_last_seen
|
move_target = enemy.player_last_seen
|
||||||
look_target = enemy.player_last_seen
|
look_target = enemy.player_last_seen + Vector3(0,.75,0)
|
||||||
enemy.nav_agent.set_target_position(move_target)
|
enemy.nav_agent.set_target_position(move_target)
|
||||||
|
|||||||
@@ -66,29 +66,30 @@ func rotate_to_face2D(object,target,target_offset_angle,delta,turn_speed):
|
|||||||
return lerp_angle(object.global_rotation.y,atan2(direction.x,direction.y) + deg_to_rad(target_offset_angle),delta * turn_speed)
|
return lerp_angle(object.global_rotation.y,atan2(direction.x,direction.y) + deg_to_rad(target_offset_angle),delta * turn_speed)
|
||||||
|
|
||||||
func rotate_to_face3D(object,target,delta,turn_speed):
|
func rotate_to_face3D(object,target,delta,turn_speed):
|
||||||
#to allow both nodes and positions to be passed to this function, test the target and use Vector3 coords
|
|
||||||
var target_transformed
|
|
||||||
if target == null:
|
if target == null:
|
||||||
target_transformed = object.global_position
|
return
|
||||||
elif target is Vector3:
|
|
||||||
target_transformed = target
|
|
||||||
elif target is Node3D:
|
|
||||||
target_transformed = target.global_position
|
|
||||||
|
|
||||||
var y_pos = Vector2(object.global_position.x,object.global_position.z)
|
var target_positon
|
||||||
var y_target_pos = Vector2(target_transformed.x,target_transformed.z)
|
|
||||||
var y_direction = (y_pos - y_target_pos)
|
|
||||||
var y_angle = atan2(y_direction.x,y_direction.y)
|
|
||||||
|
|
||||||
var x_pos = Vector2(object.global_position.y,object.global_position.z)
|
if target is Vector3:
|
||||||
var x_target_pos = Vector2(target_transformed.y,target_transformed.z)
|
target_positon = target
|
||||||
var x_direction = (x_pos - x_target_pos)
|
else:
|
||||||
var x_angle = atan2(x_direction.x,x_direction.y)
|
target_positon = target.global_position
|
||||||
|
|
||||||
#object.global_rotation.y = lerp_angle(object.global_rotation.y,y_angle,delta * turn_speed)
|
var desired_rotation = object.global_transform.looking_at(target_positon,Vector3.UP).basis.get_euler()
|
||||||
object.global_rotation.x = lerp_angle(object.global_rotation.x,x_angle,delta * turn_speed)
|
var current_rotation = object.global_rotation
|
||||||
|
|
||||||
|
#Interpolate each axis
|
||||||
|
current_rotation.x = lerp_angle(current_rotation.x,desired_rotation.x,delta * turn_speed)
|
||||||
|
current_rotation.y = lerp_angle(current_rotation.y,desired_rotation.y,delta * turn_speed)
|
||||||
|
current_rotation.z = lerp_angle(current_rotation.z,desired_rotation.z,delta * turn_speed)
|
||||||
|
|
||||||
|
#clamp pitch
|
||||||
|
var max_downward_pitch = deg_to_rad(85)
|
||||||
|
var min_upward_pitch = deg_to_rad(-45)
|
||||||
|
current_rotation.x = clamp(current_rotation.x,min_upward_pitch, max_downward_pitch)
|
||||||
|
|
||||||
|
object.global_rotation = current_rotation
|
||||||
|
|
||||||
func move_to_nav_point(delta):
|
func move_to_nav_point(delta):
|
||||||
var destination = enemy.nav_agent.get_next_path_position()
|
var destination = enemy.nav_agent.get_next_path_position()
|
||||||
|
|||||||
Reference in New Issue
Block a user