Wired up player controls to jet control surfaces; additional jet factory and game mode work
This commit is contained in:
+24
-1
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://bhjfvc7gkrvah"]
|
[gd_scene load_steps=9 format=3 uid="uid://bhjfvc7gkrvah"]
|
||||||
|
|
||||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_6qa24"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_6qa24"]
|
||||||
|
|
||||||
@@ -10,9 +10,32 @@ radiance_size = 2
|
|||||||
background_mode = 2
|
background_mode = 2
|
||||||
sky = SubResource("Sky_f3sb7")
|
sky = SubResource("Sky_f3sb7")
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_6qa24"]
|
||||||
|
subdivide_depth = 35
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_6qa24"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.49146757, 0.79522187, 1)
|
||||||
|
colors = PackedColorArray(0.101960786, 0.23137255, 0.101960786, 1, 0.3529412, 0.5882353, 0.3529412, 1, 1, 0.73200893, 0.572837, 1, 0.39866272, 0.30974528, 0, 1)
|
||||||
|
|
||||||
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_sw2hg"]
|
||||||
|
|
||||||
|
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_dxvaa"]
|
||||||
|
noise = SubResource("FastNoiseLite_sw2hg")
|
||||||
|
color_ramp = SubResource("Gradient_6qa24")
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qc2au"]
|
||||||
|
albedo_texture = SubResource("NoiseTexture2D_dxvaa")
|
||||||
|
metallic = 1.0
|
||||||
|
|
||||||
[node name="base_environment" type="Node"]
|
[node name="base_environment" type="Node"]
|
||||||
|
|
||||||
[node name="sky" type="WorldEnvironment" parent="."]
|
[node name="sky" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_sw2hg")
|
environment = SubResource("Environment_sw2hg")
|
||||||
|
|
||||||
[node name="sun" type="DirectionalLight3D" parent="."]
|
[node name="sun" type="DirectionalLight3D" parent="."]
|
||||||
|
transform = Transform3D(-0.99999994, 6.181724e-08, -6.181724e-08, 0, 0.70710677, 0.70710677, 8.742277e-08, 0.70710677, -0.70710677, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="ground" type="CSGMesh3D" parent="."]
|
||||||
|
transform = Transform3D(10000, 0, 0, 0, 1, 0, 0, 0, 10000, -0.94091797, -43.000427, 0.12632751)
|
||||||
|
mesh = SubResource("BoxMesh_6qa24")
|
||||||
|
material = SubResource("StandardMaterial3D_qc2au")
|
||||||
|
|||||||
@@ -13,5 +13,5 @@ current = true
|
|||||||
|
|
||||||
[node name="jet_factory" parent="." instance=ExtResource("2_e2o6t")]
|
[node name="jet_factory" parent="." instance=ExtResource("2_e2o6t")]
|
||||||
|
|
||||||
[node name="game_mode" parent="." node_paths=PackedStringArray("jetFactory") instance=ExtResource("3_fc0e3")]
|
[node name="game_mode" parent="." node_paths=PackedStringArray("jet_factory") instance=ExtResource("3_fc0e3")]
|
||||||
jetFactory = NodePath("../jet_factory")
|
jet_factory = NodePath("../jet_factory")
|
||||||
|
|||||||
@@ -65,3 +65,13 @@ roll_right={
|
|||||||
, 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":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":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
throttle_up={
|
||||||
|
"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
throttle_down={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|||||||
+26
-12
@@ -1,36 +1,50 @@
|
|||||||
class_name Jet extends Node3D
|
class_name Jet extends CharacterBody3D
|
||||||
|
|
||||||
|
|
||||||
|
@export_enum(
|
||||||
|
"CPU:0",
|
||||||
|
"PLAYER:1"
|
||||||
|
) var control_mode: int = JetController.CPU_MODE
|
||||||
|
|
||||||
@export_enum("CPU:0", "PLAYER:1") var control_mode: int = JetController.CPU_MODE
|
@export_enum(
|
||||||
@export_enum("Allies:0", "Axis:1") var CONFLICT_SIDE: int
|
"Allies:0",
|
||||||
|
"Axis:1",
|
||||||
|
"Neutral:2"
|
||||||
|
) var faction: int
|
||||||
|
|
||||||
@onready var camera: Camera3D = $camera
|
@onready var camera: Camera3D = $camera
|
||||||
@onready var controller: JetController = $controller
|
@onready var controller: JetController = $controller
|
||||||
|
|
||||||
|
var control_frame: BaseJet = null
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
#func _process(delta: float) -> void:
|
||||||
var action = controller.process(delta)
|
#var action = controller.process(delta)
|
||||||
if not action: return
|
#if action:
|
||||||
|
#control_frame.do_action(action, delta, self)
|
||||||
|
|
||||||
#func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
#var action = controller.physics_process(delta)
|
var action = controller.process(delta)
|
||||||
#if not action: return
|
|
||||||
|
if action:
|
||||||
|
control_frame.do_action(action, delta, self)
|
||||||
|
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
#func _unhandled_input(event: InputEvent) -> void:
|
#func _unhandled_input(event: InputEvent) -> void:
|
||||||
#var action = controller.unhandled_input(event)
|
#var action = controller.unhandled_input(event)
|
||||||
#if not action: return
|
#if not action: return
|
||||||
|
|
||||||
func set_model(model: Node):
|
func set_model(model: Node) -> void:
|
||||||
add_child(model)
|
add_child(model)
|
||||||
|
|
||||||
func set_as_player():
|
func set_as_player() -> void:
|
||||||
camera.current = true
|
camera.current = true
|
||||||
controller.control_mode = controller.PLAYER_MODE
|
controller.control_mode = controller.PLAYER_MODE
|
||||||
|
|
||||||
func set_as_cpu():
|
func set_as_cpu() -> void:
|
||||||
camera.current = false
|
camera.current = false
|
||||||
controller.control_mode = controller.CPU_MODE
|
controller.control_mode = controller.CPU_MODE
|
||||||
|
|||||||
+3
-2
@@ -3,10 +3,11 @@
|
|||||||
[ext_resource type="Script" uid="uid://be64wnjbfhnhh" path="res://scenes/jet.gd" id="1_l0pwp"]
|
[ext_resource type="Script" uid="uid://be64wnjbfhnhh" path="res://scenes/jet.gd" id="1_l0pwp"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b5btmjvj2gosl" path="res://scripts/jet_controls/controller.tscn" id="2_t5v3o"]
|
[ext_resource type="PackedScene" uid="uid://b5btmjvj2gosl" path="res://scripts/jet_controls/controller.tscn" id="2_t5v3o"]
|
||||||
|
|
||||||
[node name="jet" type="Node3D"]
|
[node name="jet" type="CharacterBody3D"]
|
||||||
script = ExtResource("1_l0pwp")
|
script = ExtResource("1_l0pwp")
|
||||||
|
|
||||||
[node name="camera" type="Camera3D" parent="."]
|
[node name="camera" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 120, 350)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 18)
|
||||||
|
current = true
|
||||||
|
|
||||||
[node name="controller" parent="." instance=ExtResource("2_t5v3o")]
|
[node name="controller" parent="." instance=ExtResource("2_t5v3o")]
|
||||||
|
|||||||
@@ -43,15 +43,27 @@ func create_cpu_jet(faction: int = 0) -> Jet:
|
|||||||
|
|
||||||
func create_neutral_jet() -> Jet:
|
func create_neutral_jet() -> Jet:
|
||||||
var jet = JET.new()
|
var jet = JET.new()
|
||||||
|
|
||||||
jet.add_child( NEUTRAL_JET.MODEL.instantiate() )
|
jet.add_child( NEUTRAL_JET.MODEL.instantiate() )
|
||||||
|
jet.faction = Globals.FACTION.NEUTRAL
|
||||||
|
jet.control_frame = NEUTRAL_JET
|
||||||
|
|
||||||
return jet
|
return jet
|
||||||
|
|
||||||
func create_allies_jet() -> Jet:
|
func create_allies_jet() -> Jet:
|
||||||
var jet = JET.instantiate()
|
var jet = JET.instantiate()
|
||||||
|
|
||||||
jet.add_child( ALLIES_JET.MODEL.instantiate() )
|
jet.add_child( ALLIES_JET.MODEL.instantiate() )
|
||||||
|
jet.faction = Globals.FACTION.ALLIES
|
||||||
|
jet.control_frame = ALLIES_JET
|
||||||
|
|
||||||
return jet
|
return jet
|
||||||
|
|
||||||
func create_axis_jet() -> Jet:
|
func create_axis_jet() -> Jet:
|
||||||
var jet = JET.instantiate()
|
var jet = JET.instantiate()
|
||||||
|
|
||||||
jet.add_child( AXIS_JET.MODEL.instantiate() )
|
jet.add_child( AXIS_JET.MODEL.instantiate() )
|
||||||
|
jet.faction = Globals.FACTION.AXIS
|
||||||
|
jet.control_frame = AXIS_JET
|
||||||
|
|
||||||
return jet
|
return jet
|
||||||
|
|||||||
@@ -1 +1,9 @@
|
|||||||
class_name BaseGameMode extends Node
|
class_name BaseGameMode extends Node
|
||||||
|
|
||||||
|
|
||||||
|
var ALLIES_COUNT: int = 10
|
||||||
|
var AXIS_COUNT: int = 10
|
||||||
|
var NEUTRAL_COUNT: int = 10
|
||||||
|
var SPAWN_COUNT: int = 16
|
||||||
|
var LIFE_CHIPS_COUNT: int = 200
|
||||||
|
var WAVES: int = 5
|
||||||
|
|||||||
@@ -1 +1,10 @@
|
|||||||
class_name DogFight extends BaseGameMode
|
class_name DogFight extends BaseGameMode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
SPAWN_COUNT = 16
|
||||||
|
LIFE_CHIPS_COUNT = SPAWN_COUNT * 3
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
pass
|
||||||
|
|||||||
@@ -1 +1,6 @@
|
|||||||
class_name DogFightWaves extends BaseGameMode
|
class_name DogFightWaves extends BaseGameMode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
pass
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ const MODES: Dictionary = {
|
|||||||
"Dog Fight Waves:1"
|
"Dog Fight Waves:1"
|
||||||
) var mode: int = 0
|
) var mode: int = 0
|
||||||
|
|
||||||
@export var jetFactory: JetFactory
|
@export var jet_factory: JetFactory
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
#MODES[mode].instantiate()
|
#MODES[mode].instantiate()
|
||||||
jetFactory.create_player_jet(Globals.FACTION.ALLIES)
|
jet_factory.create_player_jet(Globals.FACTION.ALLIES)
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ class_name JetController extends Node
|
|||||||
const CPU_MODE: int = 0
|
const CPU_MODE: int = 0
|
||||||
const PLAYER_MODE: int = 1
|
const PLAYER_MODE: int = 1
|
||||||
|
|
||||||
@export_enum("CPU:0", "PLAYER:1") var control_mode: int = PLAYER_MODE
|
@export_enum(
|
||||||
|
"CPU:0",
|
||||||
|
"PLAYER:1"
|
||||||
|
) var control_mode: int = PLAYER_MODE
|
||||||
|
|
||||||
@onready var cpu: CPU = $cpu
|
@onready var cpu: CPU = $cpu
|
||||||
@onready var player: Player = $player
|
@onready var player: Player = $player
|
||||||
|
|||||||
@@ -2,18 +2,22 @@ class_name Player extends Node
|
|||||||
|
|
||||||
|
|
||||||
func process(_delta: float) -> String:
|
func process(_delta: float) -> String:
|
||||||
if Input.is_action_just_pressed("pull_up"):
|
if Input.is_action_pressed("pull_up"):
|
||||||
return "pull_up"
|
return "pull_up"
|
||||||
if Input.is_action_just_pressed("push_down"):
|
if Input.is_action_pressed("push_down"):
|
||||||
return "push_down"
|
return "push_down"
|
||||||
if Input.is_action_just_pressed("yaw_left"):
|
if Input.is_action_pressed("yaw_left"):
|
||||||
return "yaw_left"
|
return "yaw_left"
|
||||||
if Input.is_action_just_pressed("yaw_right"):
|
if Input.is_action_pressed("yaw_right"):
|
||||||
return "yaw_right"
|
return "yaw_right"
|
||||||
if Input.is_action_just_pressed("roll_left"):
|
if Input.is_action_pressed("roll_left"):
|
||||||
return "roll_left"
|
return "roll_left"
|
||||||
if Input.is_action_just_pressed("roll_right"):
|
if Input.is_action_pressed("roll_right"):
|
||||||
return "roll_right"
|
return "roll_right"
|
||||||
|
if Input.is_action_pressed("throttle_up"):
|
||||||
|
return "throttle_up"
|
||||||
|
if Input.is_action_pressed("throttle_down"):
|
||||||
|
return "throttle_down"
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +1,75 @@
|
|||||||
class_name BaseJet extends Node
|
class_name BaseJet extends Node
|
||||||
|
|
||||||
|
|
||||||
|
var CONFLICT_SIDE = Globals.FACTION.NEUTRAL
|
||||||
|
|
||||||
var HEALTH: int = 100
|
var HEALTH: int = 100
|
||||||
var YAW_SPEED: int = 50
|
var YAW_SPEED: int = 50
|
||||||
var ROLL_SPEED: int = 100
|
var ROLL_SPEED: int = 100
|
||||||
var MIN_SPEED: int = 50
|
var MIN_SPEED: int = 200
|
||||||
var MAX_SPEED: int = 200
|
var MAX_SPEED: int = 2000
|
||||||
|
var ACCELERATION: int = 5
|
||||||
|
|
||||||
|
|
||||||
func pull_up():
|
func do_action(
|
||||||
|
action: String,
|
||||||
|
delta: float,
|
||||||
|
jet: Jet
|
||||||
|
) -> void:
|
||||||
|
var change_rate: float = deg_to_rad(1) * delta
|
||||||
|
|
||||||
|
match action:
|
||||||
|
"pull_up":
|
||||||
|
pull_up(change_rate, jet)
|
||||||
|
"push_down":
|
||||||
|
push_down(change_rate, jet)
|
||||||
|
"yaw_left":
|
||||||
|
yaw_left(change_rate, jet)
|
||||||
|
"yaw_right":
|
||||||
|
yaw_right(change_rate, jet)
|
||||||
|
"roll_left":
|
||||||
|
roll_left(change_rate, jet)
|
||||||
|
"roll_right":
|
||||||
|
roll_right(change_rate, jet)
|
||||||
|
"throttle_up":
|
||||||
|
throttle_up(delta, jet)
|
||||||
|
"throttle_down":
|
||||||
|
throttle_down(delta, jet)
|
||||||
|
_:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func push_down():
|
func pull_up(change_rate: float, jet: Jet) -> void:
|
||||||
pass
|
jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED)
|
||||||
|
|
||||||
func yaw_left():
|
func push_down(change_rate: float, jet: Jet) -> void:
|
||||||
pass
|
jet.rotate_object_local(Vector3.LEFT, change_rate * MIN_SPEED)
|
||||||
|
|
||||||
func yaw_right():
|
func yaw_left(change_rate: float, jet: Jet) -> void:
|
||||||
pass
|
jet.rotate_object_local(Vector3.UP, change_rate * YAW_SPEED)
|
||||||
|
|
||||||
func roll_left():
|
func yaw_right(change_rate: float, jet: Jet) -> void:
|
||||||
pass
|
jet.rotate_object_local(Vector3.DOWN, change_rate * YAW_SPEED)
|
||||||
|
|
||||||
func roll_right():
|
func roll_left(change_rate: float, jet: Jet) -> void:
|
||||||
pass
|
jet.rotate_object_local(Vector3.BACK, change_rate * ROLL_SPEED)
|
||||||
|
|
||||||
func throttle_up():
|
func roll_right(change_rate: float, jet: Jet) -> void:
|
||||||
pass
|
jet.rotate_object_local(Vector3.FORWARD, change_rate * ROLL_SPEED)
|
||||||
|
|
||||||
func throttle_down():
|
func throttle_up(delta: float, jet: Jet) -> void:
|
||||||
pass
|
jet.velocity += (jet.transform.basis.z * -(delta * ACCELERATION))
|
||||||
|
#clamp(
|
||||||
|
#jet.velocity,
|
||||||
|
#MIN_SPEED * Vector3.ONE,
|
||||||
|
#MAX_SPEED * Vector3.ONE
|
||||||
|
#)
|
||||||
|
|
||||||
|
jet.velocity = jet.velocity.limit_length(MAX_SPEED)
|
||||||
|
|
||||||
|
func throttle_down(delta: float, jet: Jet) -> void:
|
||||||
|
jet.velocity += (jet.transform.basis.z * (delta * ACCELERATION))
|
||||||
|
clamp(
|
||||||
|
jet.velocity,
|
||||||
|
MIN_SPEED * Vector3.ONE,
|
||||||
|
MAX_SPEED * Vector3.ONE
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
class_name EaglePlus extends BaseJet
|
class_name EaglePlus extends BaseJet
|
||||||
|
|
||||||
|
|
||||||
const CONFLICT_SIDE = 0
|
|
||||||
const MODEL = preload("uid://cfcid44xnsbdt")
|
const MODEL = preload("uid://cfcid44xnsbdt")
|
||||||
|
|
||||||
|
|
||||||
func _init() -> void:
|
func _init() -> void:
|
||||||
|
CONFLICT_SIDE = Globals.FACTION.ALLIES
|
||||||
HEALTH = 100
|
HEALTH = 100
|
||||||
YAW_SPEED = 50
|
YAW_SPEED = 50
|
||||||
ROLL_SPEED = 100
|
ROLL_SPEED = 100
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
class_name SakerFalcon extends BaseJet
|
class_name SakerFalcon extends BaseJet
|
||||||
|
|
||||||
|
|
||||||
const CONFLICT_SIDE = 1
|
|
||||||
const MODEL = preload("uid://d07rxx62esueq")
|
const MODEL = preload("uid://d07rxx62esueq")
|
||||||
|
|
||||||
|
|
||||||
func _init() -> void:
|
func _init() -> void:
|
||||||
|
CONFLICT_SIDE = Globals.FACTION.AXIS
|
||||||
HEALTH = 100
|
HEALTH = 100
|
||||||
YAW_SPEED = 50
|
YAW_SPEED = 50
|
||||||
ROLL_SPEED = 100
|
ROLL_SPEED = 100
|
||||||
|
|||||||
Reference in New Issue
Block a user