feature/moving-platforms #6
@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://ewovs6ns5y3k"]
|
||||
[gd_scene load_steps=11 format=3 uid="uid://ewovs6ns5y3k"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/networking/old/old_NetworkManager.gd" id="1_kki4t"]
|
||||
[ext_resource type="Texture2D" uid="uid://gymb0tju4y67" path="res://addons/kennysprototypetextures/Dark/texture_black (1).png" id="1_l0osb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6w0ivy4hetrl" path="res://assets/core/player-controller/scenes/player.tscn" id="2_q510b"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7mtmmke1anxp" path="res://assets/core/ships/test-ship/test-ship.tscn" id="4_feinw"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_yg2er"]
|
||||
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
||||
@ -53,3 +54,6 @@ shape = SubResource("WorldBoundaryShape3D_4238x")
|
||||
[node name="Player" parent="." instance=ExtResource("2_q510b")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
joystick_camera_sens_multiplier = 5.0
|
||||
|
||||
[node name="TestShip" parent="." instance=ExtResource("4_feinw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.24218, 0.563903, 0)
|
||||
|
59
assets/core/enviroment/dev-level/dev1D90.tmp
Normal file
59
assets/core/enviroment/dev-level/dev1D90.tmp
Normal file
@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://ewovs6ns5y3k"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/networking/NetworkManager.gd" id="1_kki4t"]
|
||||
[ext_resource type="Texture2D" uid="uid://gymb0tju4y67" path="res://addons/kennysprototypetextures/Dark/texture_black (1).png" id="1_l0osb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6w0ivy4hetrl" path="res://assets/core/player-controller/scenes/player.tscn" id="2_q510b"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7mtmmke1anxp" path="res://assets/core/ships/test-ship/test-ship.tscn" id="4_feinw"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_yg2er"]
|
||||
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
||||
ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_roqfl"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_yg2er")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_nyust"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_roqfl")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ttyg"]
|
||||
albedo_texture = ExtResource("1_l0osb")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_v66gr"]
|
||||
lightmap_size_hint = Vector2i(102, 102)
|
||||
size = Vector2(20, 20)
|
||||
|
||||
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_4238x"]
|
||||
|
||||
[node name="DevLevel" type="Node3D"]
|
||||
|
||||
[node name="NetworkManager" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("1_kki4t")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_nyust")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="."]
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"]
|
||||
material_override = SubResource("StandardMaterial3D_8ttyg")
|
||||
mesh = SubResource("PlaneMesh_v66gr")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
|
||||
shape = SubResource("WorldBoundaryShape3D_4238x")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_q510b")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
joystick_camera_sens_multiplier = 5.0
|
||||
|
||||
[node name="TestShip" parent="." instance=ExtResource("4_feinw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.24218, 0.563903, 0)
|
59
assets/core/enviroment/dev-level/dev81EA.tmp
Normal file
59
assets/core/enviroment/dev-level/dev81EA.tmp
Normal file
@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://ewovs6ns5y3k"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/networking/NetworkManager.gd" id="1_kki4t"]
|
||||
[ext_resource type="Texture2D" uid="uid://gymb0tju4y67" path="res://addons/kennysprototypetextures/Dark/texture_black (1).png" id="1_l0osb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6w0ivy4hetrl" path="res://assets/core/player-controller/scenes/player.tscn" id="2_q510b"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7mtmmke1anxp" path="res://assets/core/ships/test-ship/test-ship.tscn" id="4_feinw"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_yg2er"]
|
||||
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
||||
ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_roqfl"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_yg2er")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_nyust"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_roqfl")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ttyg"]
|
||||
albedo_texture = ExtResource("1_l0osb")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_v66gr"]
|
||||
lightmap_size_hint = Vector2i(102, 102)
|
||||
size = Vector2(20, 20)
|
||||
|
||||
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_4238x"]
|
||||
|
||||
[node name="DevLevel" type="Node3D"]
|
||||
|
||||
[node name="NetworkManager" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("1_kki4t")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_nyust")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="."]
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"]
|
||||
material_override = SubResource("StandardMaterial3D_8ttyg")
|
||||
mesh = SubResource("PlaneMesh_v66gr")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
|
||||
shape = SubResource("WorldBoundaryShape3D_4238x")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_q510b")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
joystick_camera_sens_multiplier = 5.0
|
||||
|
||||
[node name="TestShip" parent="." instance=ExtResource("4_feinw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.24218, 0.563903, 0)
|
9
assets/core/interactables/Interactable.gd
Normal file
9
assets/core/interactables/Interactable.gd
Normal file
@ -0,0 +1,9 @@
|
||||
class_name Interactable
|
||||
|
||||
extends Node3D
|
||||
|
||||
var player_reference: Player
|
||||
|
||||
|
||||
func interact():
|
||||
pass
|
16
assets/core/interactables/ship-helm/ship-helm.tscn
Normal file
16
assets/core/interactables/ship-helm/ship-helm.tscn
Normal file
@ -0,0 +1,16 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dm31ddavxv5gt"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/interactables/ship-helm/ship_helm.gd" id="1_lsarv"]
|
||||
[ext_resource type="PackedScene" uid="uid://d2e3plio1db16" path="res://assets/core/interactables/ship-helm/ship_helm.blend" id="2_n3ctg"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_u6a0w"]
|
||||
size = Vector3(1, 1.23828, 0.332275)
|
||||
|
||||
[node name="ShipHelm" type="StaticBody3D"]
|
||||
script = ExtResource("1_lsarv")
|
||||
|
||||
[node name="ship_helm" parent="." instance=ExtResource("2_n3ctg")]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.220532, 0.0608378)
|
||||
shape = SubResource("BoxShape3D_u6a0w")
|
BIN
assets/core/interactables/ship-helm/ship_helm.blend
Normal file
BIN
assets/core/interactables/ship-helm/ship_helm.blend
Normal file
Binary file not shown.
51
assets/core/interactables/ship-helm/ship_helm.blend.import
Normal file
51
assets/core/interactables/ship-helm/ship_helm.blend.import
Normal file
@ -0,0 +1,51 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://d2e3plio1db16"
|
||||
path="res://.godot/imported/ship_helm.blend-ff92b4e852f739448ae2d5004545d8b0.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/core/interactables/ship-helm/ship_helm.blend"
|
||||
dest_files=["res://.godot/imported/ship_helm.blend-ff92b4e852f739448ae2d5004545d8b0.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
19
assets/core/interactables/ship-helm/ship_helm.gd
Normal file
19
assets/core/interactables/ship-helm/ship_helm.gd
Normal file
@ -0,0 +1,19 @@
|
||||
class_name ShipHelm
|
||||
|
||||
extends Interactable
|
||||
|
||||
@export var parent_ship: Ship
|
||||
|
||||
var is_being_piloted: bool = false
|
||||
|
||||
func interact():
|
||||
if !is_being_piloted:
|
||||
player_reference.set_is_piloting(true)
|
||||
print("set player to piloting")
|
||||
is_being_piloted = true
|
||||
parent_ship.ship_is_piloted = true
|
||||
elif is_being_piloted:
|
||||
player_reference.set_is_piloting(false)
|
||||
print("set player to NOT piloting")
|
||||
is_being_piloted = false
|
||||
parent_ship.ship_is_piloted = false
|
BIN
assets/core/placeable-objects/ship_helm.blend
Normal file
BIN
assets/core/placeable-objects/ship_helm.blend
Normal file
Binary file not shown.
51
assets/core/placeable-objects/ship_helm.blend.import
Normal file
51
assets/core/placeable-objects/ship_helm.blend.import
Normal file
@ -0,0 +1,51 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cje1q2piwu0ri"
|
||||
path="res://.godot/imported/ship_helm.blend-ea3ce672878a6c3516ac3fa7aae30891.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/core/placeable-objects/ship_helm.blend"
|
||||
dest_files=["res://.godot/imported/ship_helm.blend-ea3ce672878a6c3516ac3fa7aae30891.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
BIN
assets/core/placeable-objects/ship_helm.blend1
Normal file
BIN
assets/core/placeable-objects/ship_helm.blend1
Normal file
Binary file not shown.
35
assets/core/player-controller/scenes/pla106A.tmp
Normal file
35
assets/core/player-controller/scenes/pla106A.tmp
Normal file
@ -0,0 +1,35 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://c6w0ivy4hetrl"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/player-controller/scripts/player.gd" id="1_bv7t4"]
|
||||
[ext_resource type="Script" path="res://assets/core/player-controller/scripts/player_interacter.gd" id="2_wvu3d"]
|
||||
|
||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_v7b3h"]
|
||||
radius = 0.35
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qlkab"]
|
||||
radius = 0.35
|
||||
|
||||
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera")]
|
||||
script = ExtResource("1_bv7t4")
|
||||
camera = NodePath("Neck/Camera3D")
|
||||
|
||||
[node name="PlayerTag" type="Label3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.26654, 0)
|
||||
billboard = 1
|
||||
text = "username"
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("CapsuleMesh_v7b3h")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CapsuleShape3D_qlkab")
|
||||
|
||||
[node name="Neck" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.65, 0)
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="Neck"]
|
||||
|
||||
[node name="RayCast3D" type="RayCast3D" parent="Neck/Camera3D" node_paths=PackedStringArray("player")]
|
||||
target_position = Vector3(0, 0, -2.5)
|
||||
script = ExtResource("2_wvu3d")
|
||||
player = NodePath("../../..")
|
@ -1,6 +1,7 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://c6w0ivy4hetrl"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://c6w0ivy4hetrl"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/player-controller/scripts/player.gd" id="1_bv7t4"]
|
||||
[ext_resource type="Script" path="res://assets/core/player-controller/scripts/player_interacter.gd" id="2_wvu3d"]
|
||||
|
||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_v7b3h"]
|
||||
radius = 0.35
|
||||
@ -10,15 +11,15 @@ radius = 0.35
|
||||
|
||||
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera")]
|
||||
script = ExtResource("1_bv7t4")
|
||||
speed = null
|
||||
acceleration = null
|
||||
jump_height = null
|
||||
camera_sens = null
|
||||
joystick_camera_sens_multiplier = null
|
||||
camera = NodePath("Neck/Camera3D")
|
||||
|
||||
[node name="PlayerTag" type="Label3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.26654, 0)
|
||||
visibility_range_begin = 0.7
|
||||
visibility_range_begin_margin = 14.0
|
||||
visibility_range_end = 15.0
|
||||
visibility_range_end_margin = 14.0
|
||||
visibility_range_fade_mode = 1
|
||||
billboard = 1
|
||||
text = "username"
|
||||
|
||||
@ -32,3 +33,8 @@ shape = SubResource("CapsuleShape3D_qlkab")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.65, 0)
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="Neck"]
|
||||
|
||||
[node name="RayCast3D" type="RayCast3D" parent="Neck/Camera3D" node_paths=PackedStringArray("player")]
|
||||
target_position = Vector3(0, 0, -2.5)
|
||||
script = ExtResource("2_wvu3d")
|
||||
player = NodePath("../../..")
|
||||
|
@ -3,9 +3,10 @@ class_name Player extends CharacterBody3D
|
||||
var network_manager: OldnetworkManager
|
||||
var player_tag: Label3D
|
||||
var username: String = ""
|
||||
var is_piloting: bool = false
|
||||
|
||||
@export_category("Player")
|
||||
@export_range(1, 35, 1) var speed: float = 10 # m/s
|
||||
@export_range(1, 35, 1) var speed: float = 5 # m/s
|
||||
@export_range(10, 400, 1) var acceleration: float = 100 # m/s^2
|
||||
|
||||
@export_range(0.1, 3.0, 0.1) var jump_height: float = 1 # m
|
||||
@ -23,6 +24,8 @@ var walk_vel: Vector3 # Walking velocity
|
||||
var grav_vel: Vector3 # Gravity velocity
|
||||
var jump_vel: Vector3 # Jumping velocity
|
||||
|
||||
var current_ship: Ship
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
capture_mouse()
|
||||
@ -47,7 +50,7 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||
_rotate_camera()
|
||||
elif event is InputEventJoypadMotion:
|
||||
is_using_joystick = true
|
||||
if Input.is_action_just_pressed("jump"):
|
||||
if Input.is_action_just_pressed("jump") and !is_piloting:
|
||||
jumping = true
|
||||
|
||||
|
||||
@ -59,9 +62,20 @@ func _input(event):
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if current_ship != null:
|
||||
if !is_piloting:
|
||||
velocity = walk(delta) + _gravity(delta) + _jump(delta)
|
||||
global_transform.basis = current_ship.global_transform.basis
|
||||
else:
|
||||
global_rotation.y = current_ship.global_rotation.y
|
||||
|
||||
else:
|
||||
velocity = walk(delta) + _gravity(delta) + _jump(delta)
|
||||
global_rotation.x = 0.0
|
||||
global_rotation.z = 0.0
|
||||
|
||||
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
_handle_joypad_camera_rotation(delta)
|
||||
velocity = _walk(delta) + _gravity(delta) + _jump(delta)
|
||||
move_and_slide()
|
||||
|
||||
|
||||
@ -90,7 +104,7 @@ func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void
|
||||
look_dir = Vector2.ZERO
|
||||
|
||||
|
||||
func _walk(delta: float) -> Vector3:
|
||||
func walk(delta: float) -> Vector3:
|
||||
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
move_dir = Input.get_vector("move_left", "move_right", "move_forwards", "move_backwards")
|
||||
var _forward: Vector3 = camera.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y)
|
||||
@ -111,3 +125,19 @@ func _jump(delta: float) -> Vector3:
|
||||
return jump_vel
|
||||
jump_vel = Vector3.ZERO if is_on_floor() else jump_vel.move_toward(Vector3.ZERO, gravity * delta)
|
||||
return jump_vel
|
||||
|
||||
|
||||
func player_entered_ship(ship_global_position: Vector3, ship: Ship):
|
||||
current_ship = ship
|
||||
print(ship.ship_id)
|
||||
print(global_position)
|
||||
|
||||
|
||||
func player_exited_ship(ship_global_position: Vector3, ship: Ship):
|
||||
current_ship = null
|
||||
print(ship.ship_id)
|
||||
print(global_position)
|
||||
|
||||
|
||||
func set_is_piloting(state: bool):
|
||||
is_piloting = state
|
||||
|
13
assets/core/player-controller/scripts/player_interacter.gd
Normal file
13
assets/core/player-controller/scripts/player_interacter.gd
Normal file
@ -0,0 +1,13 @@
|
||||
extends RayCast3D
|
||||
|
||||
@export var player: Player
|
||||
|
||||
var current_interactable: Interactable
|
||||
|
||||
func _input(event):
|
||||
if is_colliding() and get_collider() is Interactable:
|
||||
if event.is_action_released("interact"):
|
||||
current_interactable = get_collider() as Interactable
|
||||
GameConsole.log_debug("interacted with interactable: " + current_interactable.name)
|
||||
current_interactable.player_reference = player
|
||||
current_interactable.interact()
|
69
assets/core/ships/test-ship/test-ship.tscn
Normal file
69
assets/core/ships/test-ship/test-ship.tscn
Normal file
@ -0,0 +1,69 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://c7mtmmke1anxp"]
|
||||
|
||||
[ext_resource type="Script" path="res://assets/core/ships/test-ship/test_ship.gd" id="1_yql7r"]
|
||||
[ext_resource type="PackedScene" uid="uid://dm31ddavxv5gt" path="res://assets/core/interactables/ship-helm/ship-helm.tscn" id="2_bmsx0"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_tkeg5"]
|
||||
size = Vector3(5, 0.25, 10)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_fs34p"]
|
||||
size = Vector3(5, 0.25, 10)
|
||||
|
||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_oqio3"]
|
||||
radius = 1.401
|
||||
height = 7.405
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_7jr0u"]
|
||||
size = Vector3(5.14063, 6.07324, 10.1924)
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_h3cm2"]
|
||||
top_radius = 0.1
|
||||
bottom_radius = 0.1
|
||||
height = 4.5
|
||||
|
||||
[node name="TestShip" type="RigidBody3D" node_paths=PackedStringArray("ship_area", "ship_helm")]
|
||||
mass = 800.0
|
||||
gravity_scale = 0.0
|
||||
script = ExtResource("1_yql7r")
|
||||
ship_area = NodePath("Area3D")
|
||||
ship_helm = NodePath("ShipHelm")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("BoxMesh_tkeg5")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_fs34p")
|
||||
|
||||
[node name="Balloon" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 5.12542, 0)
|
||||
mesh = SubResource("CapsuleMesh_oqio3")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Area3D" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.99997, 0)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
|
||||
shape = SubResource("BoxShape3D_7jr0u")
|
||||
|
||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, 1.25913, 1.87582, 2.33493)
|
||||
mesh = SubResource("CylinderMesh_h3cm2")
|
||||
|
||||
[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.2691, 1.87582, 2.33493)
|
||||
mesh = SubResource("CylinderMesh_h3cm2")
|
||||
|
||||
[node name="MeshInstance3D4" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, 1.25913, 1.87582, -2.52429)
|
||||
mesh = SubResource("CylinderMesh_h3cm2")
|
||||
|
||||
[node name="MeshInstance3D5" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.2691, 1.87582, -2.52429)
|
||||
mesh = SubResource("CylinderMesh_h3cm2")
|
||||
|
||||
[node name="ShipHelm" parent="." node_paths=PackedStringArray("parent_ship") instance=ExtResource("2_bmsx0")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, -0.598755)
|
||||
parent_ship = NodePath("..")
|
||||
|
||||
[connection signal="body_entered" from="Area3D" to="." method="_on_area_3d_body_entered"]
|
||||
[connection signal="body_exited" from="Area3D" to="." method="_on_area_3d_body_exited"]
|
52
assets/core/ships/test-ship/test_ship.gd
Normal file
52
assets/core/ships/test-ship/test_ship.gd
Normal file
@ -0,0 +1,52 @@
|
||||
class_name Ship
|
||||
extends RigidBody3D
|
||||
|
||||
@export var ship_area: Area3D
|
||||
@export var ship_helm: ShipHelm
|
||||
|
||||
var ship_id: String = "1a"
|
||||
var ship_is_piloted: bool = false
|
||||
var base_turn_speed: float = 1
|
||||
var ship_lift_speed: float = 20 # Adjust this value as needed
|
||||
var acceleration: float = 50
|
||||
var deceleration: float = acceleration * 0.5
|
||||
var ship_top_speed: float = 100
|
||||
var current_speed: float = 0.0
|
||||
var max_force: float = 1000.0
|
||||
|
||||
func _physics_process(delta):
|
||||
global_rotation.x = lerpf(global_rotation.x, 0, 0.01)
|
||||
global_rotation.z = lerpf(global_rotation.z, 0, 0.01)
|
||||
|
||||
if ship_is_piloted:
|
||||
var turn_speed = base_turn_speed / max(mass, 1)
|
||||
if Input.is_action_pressed("move_left"):
|
||||
angular_velocity.y += turn_speed
|
||||
elif Input.is_action_pressed("move_right"):
|
||||
angular_velocity.y -= turn_speed
|
||||
|
||||
if Input.is_action_pressed("jump"):
|
||||
# Apply an impulse to achieve instantaneous upward velocity
|
||||
apply_impulse(Vector3.UP * ship_lift_speed)
|
||||
|
||||
if Input.is_action_pressed("move_forwards"):
|
||||
current_speed = min(current_speed + acceleration * delta, ship_top_speed)
|
||||
else:
|
||||
current_speed = max(current_speed - deceleration * delta, 0.0)
|
||||
|
||||
var desired_velocity = -transform.basis.z * current_speed
|
||||
var forward_force = (desired_velocity - linear_velocity) * mass
|
||||
forward_force = forward_force.normalized() * min(forward_force.length(), max_force)
|
||||
apply_central_force(forward_force)
|
||||
|
||||
angular_velocity.y = clamp(angular_velocity.y, -0.5, 0.5)
|
||||
|
||||
func _on_area_3d_body_entered(body):
|
||||
if body is Player:
|
||||
body.player_entered_ship(global_position, self)
|
||||
|
||||
|
||||
func _on_area_3d_body_exited(body):
|
||||
if body is Player:
|
||||
body.player_exited_ship(global_position, self)
|
||||
ship_helm.is_being_piloted = false
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user