Moved to pith verbage; CPUController WIP testing
This commit is contained in:
@@ -22,8 +22,8 @@ enum ControlMode {
|
|||||||
|
|
||||||
enum ControllerCommand {
|
enum ControllerCommand {
|
||||||
NONE,
|
NONE,
|
||||||
PULL_UP,
|
PITCH_UP,
|
||||||
PUSH_DOWN,
|
PITCH_DOWN,
|
||||||
YAW_LEFT,
|
YAW_LEFT,
|
||||||
YAW_RIGHT,
|
YAW_RIGHT,
|
||||||
ROLL_LEFT,
|
ROLL_LEFT,
|
||||||
|
|||||||
+4
-4
@@ -31,13 +31,13 @@ window/size/window_height_override=720
|
|||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
pull_up={
|
pitch_up={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
push_down={
|
pitch_down={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
@@ -46,13 +46,13 @@ push_down={
|
|||||||
yaw_left={
|
yaw_left={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
yaw_right={
|
yaw_right={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
roll_left={
|
roll_left={
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ class_name Jet extends CharacterBody3D
|
|||||||
@onready var controller: JetController = $controller
|
@onready var controller: JetController = $controller
|
||||||
|
|
||||||
var control_frame: BaseJet = null
|
var control_frame: BaseJet = null
|
||||||
|
var target: Jet = null
|
||||||
|
var targeted_by: Jet = null
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|||||||
@@ -17,4 +17,9 @@ far = 10000.0
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.17266846, -0.17565918, -1.5986328)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.17266846, -0.17565918, -1.5986328)
|
||||||
shape = SubResource("BoxShape3D_31fu5")
|
shape = SubResource("BoxShape3D_31fu5")
|
||||||
|
|
||||||
|
[node name="target_ray" type="RayCast3D" parent="."]
|
||||||
|
collision_mask = 8
|
||||||
|
collide_with_areas = true
|
||||||
|
debug_shape_custom_color = Color(0.76862746, 0, 0, 1)
|
||||||
|
|
||||||
[node name="controller" parent="." instance=ExtResource("2_t5v3o")]
|
[node name="controller" parent="." instance=ExtResource("2_t5v3o")]
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ func _process(_delta: float) -> void:
|
|||||||
if Globals.ControlMode.PLAYER_MODE == jet.controller.control_mode:
|
if Globals.ControlMode.PLAYER_MODE == jet.controller.control_mode:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
process_jet_plan(jet.controller.cpu)
|
process_jet_plan(jet)
|
||||||
|
|
||||||
func _controller_message(event: BaseEvent) -> void:
|
func _controller_message(event: BaseEvent) -> void:
|
||||||
if event is InitSpawnsLoadedEvent:
|
if event is InitSpawnsLoadedEvent:
|
||||||
@@ -22,7 +22,71 @@ func handle_init_spawns_loaded_event() -> void:
|
|||||||
create_jet_plan(jet)
|
create_jet_plan(jet)
|
||||||
|
|
||||||
func create_jet_plan(jet: Jet) -> void:
|
func create_jet_plan(jet: Jet) -> void:
|
||||||
print(jet)
|
assign_jet_target(jet)
|
||||||
|
|
||||||
func process_jet_plan(jet: CPU) -> void:
|
func assign_jet_target(jet: Jet) -> void:
|
||||||
jet.yaw_left()
|
for _jet: Jet in jets_collection.get_children():
|
||||||
|
if _jet.faction == jet.faction: continue
|
||||||
|
if _jet.targeted_by: continue
|
||||||
|
|
||||||
|
_jet.targeted_by = jet
|
||||||
|
jet.target = _jet
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
func process_jet_plan(jet: Jet) -> void:
|
||||||
|
if not is_instance_valid(jet.target): return
|
||||||
|
|
||||||
|
var direction: Vector3 = (
|
||||||
|
jet.target.global_position - jet.global_position
|
||||||
|
).normalized()
|
||||||
|
|
||||||
|
var target_basis = Basis.looking_at(direction, Vector3.UP)
|
||||||
|
var target_rotation = target_basis.get_euler()
|
||||||
|
var current_rotation = jet.global_rotation
|
||||||
|
|
||||||
|
var yaw_error = wrapf(
|
||||||
|
target_rotation.y - current_rotation.y,
|
||||||
|
-PI,
|
||||||
|
PI
|
||||||
|
)
|
||||||
|
|
||||||
|
var pitch_error = wrapf(
|
||||||
|
target_rotation.x - current_rotation.x,
|
||||||
|
-PI,
|
||||||
|
PI
|
||||||
|
)
|
||||||
|
|
||||||
|
var deadzone = deg_to_rad(2.0)
|
||||||
|
|
||||||
|
if yaw_error > deadzone:
|
||||||
|
jet.controller.cpu.yaw_right()
|
||||||
|
elif yaw_error < -deadzone:
|
||||||
|
jet.controller.cpu.yaw_left()
|
||||||
|
else:
|
||||||
|
jet.controller.cpu.no_action()
|
||||||
|
|
||||||
|
if pitch_error > deadzone:
|
||||||
|
jet.controller.cpu.pitch_down()
|
||||||
|
elif pitch_error < -deadzone:
|
||||||
|
jet.controller.cpu.pitch_up()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#func process_jet_plan(jet: Jet) -> void:
|
||||||
|
#var direction = (jet.target.global_position - jet.global_position).normalized()
|
||||||
|
#var target_basis = jet.looking_at(direction, Vector3.UP)
|
||||||
|
#var target_rotation = target_basis.get_euler()
|
||||||
|
|
||||||
|
|
||||||
|
#var direction = jet.target.global_position - jet.global_position
|
||||||
|
#var desired_rotation = jet.look_rotation(direction)
|
||||||
|
|
||||||
|
#var rotation_error = desired_rotation - jet.rotation
|
||||||
|
|
||||||
|
#jet.pitch_input = calculate_pitch(rotation_error)
|
||||||
|
#jet.yaw_input = calculate_yaw(rotation_error)
|
||||||
|
#jet.roll_input = calculate_roll(rotation_error)
|
||||||
|
#jet.throttle = calculate_throttle(distance)
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand:
|
|||||||
return command
|
return command
|
||||||
|
|
||||||
|
|
||||||
func pull_up() -> void:
|
func pitch_up() -> void:
|
||||||
command = Globals.ControllerCommand.PULL_UP
|
command = Globals.ControllerCommand.PITCH_UP
|
||||||
|
|
||||||
func push_down() -> void:
|
func pitch_down() -> void:
|
||||||
command = Globals.ControllerCommand.PUSH_DOWN
|
command = Globals.ControllerCommand.PITCH_DOWN
|
||||||
|
|
||||||
func yaw_left() -> void:
|
func yaw_left() -> void:
|
||||||
command = Globals.ControllerCommand.YAW_LEFT
|
command = Globals.ControllerCommand.YAW_LEFT
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ class_name Player extends Node
|
|||||||
|
|
||||||
|
|
||||||
func process(_delta: float) -> Globals.ControllerCommand:
|
func process(_delta: float) -> Globals.ControllerCommand:
|
||||||
if Input.is_action_pressed("pull_up"):
|
if Input.is_action_pressed("pitch_up"):
|
||||||
return Globals.ControllerCommand.PULL_UP
|
return Globals.ControllerCommand.PITCH_UP
|
||||||
if Input.is_action_pressed("push_down"):
|
if Input.is_action_pressed("pitch_down"):
|
||||||
return Globals.ControllerCommand.PUSH_DOWN
|
return Globals.ControllerCommand.PITCH_DOWN
|
||||||
if Input.is_action_pressed("yaw_left"):
|
if Input.is_action_pressed("yaw_left"):
|
||||||
return Globals.ControllerCommand.YAW_LEFT
|
return Globals.ControllerCommand.YAW_LEFT
|
||||||
if Input.is_action_pressed("yaw_right"):
|
if Input.is_action_pressed("yaw_right"):
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ func do_action(
|
|||||||
var change_rate: float = deg_to_rad(1) * delta
|
var change_rate: float = deg_to_rad(1) * delta
|
||||||
|
|
||||||
match action:
|
match action:
|
||||||
Globals.ControllerCommand.PULL_UP:
|
Globals.ControllerCommand.PITCH_UP:
|
||||||
pull_up(change_rate, jet)
|
pitch_up(change_rate, jet)
|
||||||
Globals.ControllerCommand.PUSH_DOWN:
|
Globals.ControllerCommand.PITCH_DOWN:
|
||||||
push_down(change_rate, jet)
|
pitch_down(change_rate, jet)
|
||||||
Globals.ControllerCommand.YAW_LEFT:
|
Globals.ControllerCommand.YAW_LEFT:
|
||||||
yaw_left(change_rate, jet)
|
yaw_left(change_rate, jet)
|
||||||
Globals.ControllerCommand.YAW_RIGHT:
|
Globals.ControllerCommand.YAW_RIGHT:
|
||||||
@@ -40,10 +40,10 @@ func do_action(
|
|||||||
_:
|
_:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func pull_up(change_rate: float, jet: Jet) -> void:
|
func pitch_up(change_rate: float, jet: Jet) -> void:
|
||||||
jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED)
|
jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED)
|
||||||
|
|
||||||
func push_down(change_rate: float, jet: Jet) -> void:
|
func pitch_down(change_rate: float, jet: Jet) -> void:
|
||||||
jet.rotate_object_local(Vector3.LEFT, change_rate * MIN_SPEED)
|
jet.rotate_object_local(Vector3.LEFT, change_rate * MIN_SPEED)
|
||||||
|
|
||||||
func yaw_left(change_rate: float, jet: Jet) -> void:
|
func yaw_left(change_rate: float, jet: Jet) -> void:
|
||||||
|
|||||||
Reference in New Issue
Block a user