Experimental VehicleBody3D setup for vehicle simulations
This commit is contained in:
parent
f6680e7028
commit
02d23d2199
11 changed files with 135 additions and 19 deletions
Binary file not shown.
Binary file not shown.
BIN
blender/tire.blend
Normal file
BIN
blender/tire.blend
Normal file
Binary file not shown.
53
blender/tire.blend.import
Normal file
53
blender/tire.blend.import
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://c84tiggbw7fby"
|
||||||
|
path="res://.godot/imported/tire.blend-257acba8f91987b9d3ccadd03f9c2628.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://blender/tire.blend"
|
||||||
|
dest_files=["res://.godot/imported/tire.blend-257acba8f91987b9d3ccadd03f9c2628.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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/export_geometry_nodes_instances=false
|
||||||
|
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
|
||||||
Binary file not shown.
BIN
objects/tire.glb
Normal file
BIN
objects/tire.glb
Normal file
Binary file not shown.
37
objects/tire.glb.import
Normal file
37
objects/tire.glb.import
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://ciad77soibtc6"
|
||||||
|
path="res://.godot/imported/tire.glb-8859bd6645e15498c4765ffa15527f9c.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://objects/tire.glb"
|
||||||
|
dest_files=["res://.godot/imported/tire.glb-8859bd6645e15498c4765ffa15527f9c.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type="Node3D"
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
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={}
|
||||||
|
gltf/naming_version=1
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
[gd_scene load_steps=8 format=3 uid="uid://d4ljkc7l57udr"]
|
[gd_scene load_steps=9 format=3 uid="uid://d4ljkc7l57udr"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dtncvl5af4fhr" path="res://objects/road.glb" id="1_uwrxv"]
|
[ext_resource type="PackedScene" uid="uid://dtncvl5af4fhr" path="res://objects/road.glb" id="1_uwrxv"]
|
||||||
[ext_resource type="Script" uid="uid://cs0y5pe8qnj2r" path="res://scripts/player.gd" id="2_lnu2h"]
|
[ext_resource type="Script" uid="uid://63j50wn1myoi" path="res://scripts/vehicle.gd" id="2_lnu2h"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cewenjpq8wbig" path="res://objects/testcar.glb" id="2_yqjtg"]
|
[ext_resource type="PackedScene" uid="uid://cewenjpq8wbig" path="res://objects/testcar.glb" id="2_yqjtg"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://btpfvhpv0630f" path="res://scenes/wheel.tscn" id="4_lbhrr"]
|
||||||
|
|
||||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_lnu2h"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_lnu2h"]
|
||||||
sky_top_color = Color(0, 0.388235, 1, 1)
|
sky_top_color = Color(0, 0.388235, 1, 1)
|
||||||
|
|
@ -18,8 +19,8 @@ sky = SubResource("Sky_lbhrr")
|
||||||
tonemap_mode = 2
|
tonemap_mode = 2
|
||||||
glow_enabled = true
|
glow_enabled = true
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_yqjtg"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_lbhrr"]
|
||||||
size = Vector3(3.60051, 2.21851, 1.87103)
|
size = Vector3(3.6333, 0.937874, 1.93555)
|
||||||
|
|
||||||
[node name="Game" type="Node3D"]
|
[node name="Game" type="Node3D"]
|
||||||
|
|
||||||
|
|
@ -56,25 +57,33 @@ transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -129.655, 9.53674e-07, 0.0019
|
||||||
[node name="Road8" parent="RoadBlocks" instance=ExtResource("1_uwrxv")]
|
[node name="Road8" parent="RoadBlocks" instance=ExtResource("1_uwrxv")]
|
||||||
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -109.606, 0, 0)
|
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -109.606, 0, 0)
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody3D" parent="."]
|
[node name="PlayerVehicle" type="VehicleBody3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.449395)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.519431)
|
||||||
script = ExtResource("2_lnu2h")
|
script = ExtResource("2_lnu2h")
|
||||||
|
|
||||||
[node name="TestCar" parent="Player" instance=ExtResource("2_yqjtg")]
|
[node name="TestCar" parent="PlayerVehicle" instance=ExtResource("2_yqjtg")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.53674e-07, -0.463639)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.464)
|
||||||
|
|
||||||
[node name="FrontLeftWheel" type="Node3D" parent="Player/TestCar"]
|
[node name="RearLeftWheel" parent="PlayerVehicle" instance=ExtResource("4_lbhrr")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8, 0.3, 1.2)
|
transform = Transform3D(-2.62268e-08, 0, -0.6, 0, 0.6, 0, 0.6, 0, -2.62268e-08, 0.943448, 0.301217, 0.324063)
|
||||||
|
use_as_traction = true
|
||||||
|
|
||||||
[node name="FrontRightWheel" type="Node3D" parent="Player/TestCar"]
|
[node name="FrontLeftWheel" parent="PlayerVehicle" instance=ExtResource("4_lbhrr")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 0.3, 1.2)
|
transform = Transform3D(-2.62268e-08, 0, -0.6, 0, 0.6, 0, 0.6, 0, -2.62268e-08, -1.49207, 0.301217, 0.324063)
|
||||||
|
use_as_steering = true
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player"]
|
[node name="RearRightWheel" parent="PlayerVehicle" instance=ExtResource("4_lbhrr")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.279745, 1.10964, -0.462006)
|
transform = Transform3D(-2.62268e-08, 0, -0.6, 0, 0.6, 0, 0.6, 0, -2.62268e-08, 0.943448, 0.301217, -1.24299)
|
||||||
shape = SubResource("BoxShape3D_yqjtg")
|
use_as_traction = true
|
||||||
|
|
||||||
[node name="Head" type="Node3D" parent="Player"]
|
[node name="FrontRightWheel" parent="PlayerVehicle" instance=ExtResource("4_lbhrr")]
|
||||||
transform = Transform3D(0.965536, 0.260269, 0, -0.260269, 0.965536, 0, 0, 0, 1, 0, 1.54334, -0.215674)
|
transform = Transform3D(-2.62268e-08, 0, -0.6, 0, 0.6, 0, 0.6, 0, -2.62268e-08, -1.49207, 0.301217, -1.24299)
|
||||||
|
use_as_steering = true
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="Player/Head"]
|
[node name="Camera3D" type="Camera3D" parent="PlayerVehicle"]
|
||||||
transform = Transform3D(-4.25071e-08, -0.233123, 0.972448, -1.01901e-08, 0.972448, 0.233123, -1, 5.4623e-14, -4.37115e-08, -0.136201, -0.0638226, 0.247312)
|
transform = Transform3D(-3.92527e-08, -0.440002, 0.897997, -1.92331e-08, 0.897997, 0.440002, -1, 8.73235e-16, -4.37114e-08, 3.93353, 3.74796, -0.402741)
|
||||||
|
fov = 71.0
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerVehicle"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.283447, 0.713863, -0.467773)
|
||||||
|
shape = SubResource("BoxShape3D_lbhrr")
|
||||||
|
|
|
||||||
8
scenes/wheel.tscn
Normal file
8
scenes/wheel.tscn
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://btpfvhpv0630f"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://ciad77soibtc6" path="res://objects/tire.glb" id="1_hm1pg"]
|
||||||
|
|
||||||
|
[node name="Wheel" type="VehicleWheel3D"]
|
||||||
|
|
||||||
|
[node name="TireMesh" parent="." instance=ExtResource("1_hm1pg")]
|
||||||
|
transform = Transform3D(-7.21238e-08, 0, -1.65, 0, 1.65, 0, 1.65, 0, -7.21238e-08, 0, -0.0759154, 0)
|
||||||
8
scripts/vehicle.gd
Normal file
8
scripts/vehicle.gd
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
extends VehicleBody3D
|
||||||
|
|
||||||
|
@export var MAX_STEER = 0.5
|
||||||
|
@export var ENGINE_POWER = 300
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
steering = move_toward(steering, Input.get_axis("turn_right", "turn_left") * MAX_STEER, delta * 10)
|
||||||
|
engine_force = Input.get_axis("move_backward", "move_forward") * ENGINE_POWER
|
||||||
1
scripts/vehicle.gd.uid
Normal file
1
scripts/vehicle.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://63j50wn1myoi
|
||||||
Loading…
Add table
Add a link
Reference in a new issue