Implement moving platforms
This commit is contained in:
parent
c203e3e4b8
commit
00c35dd79f
Binary file not shown.
|
@ -0,0 +1,53 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dkr18e7uct18e"
|
||||
path="res://.godot/imported/platform_constructed.blend-acfeda0aef8e23cc81e835d34f55a927.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/props/platform_constructed.blend"
|
||||
dest_files=["res://.godot/imported/platform_constructed.blend-acfeda0aef8e23cc81e835d34f55a927.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.
Binary file not shown.
After Width: | Height: | Size: 82 KiB |
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dvuqttbn7p2fn"
|
||||
path.s3tc="res://.godot/imported/Platform_Constructed_AlbedoTexture.png-3d17f2978411ca1284ca1d059c328fa6.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/props/textures/Platform_Constructed_AlbedoTexture.png"
|
||||
dest_files=["res://.godot/imported/Platform_Constructed_AlbedoTexture.png-3d17f2978411ca1284ca1d059c328fa6.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ctc43ugldo7km"
|
||||
path.s3tc="res://.godot/imported/Platform_Constructed_RoughnessTexture.png-9963302ccb2e73dd0c9033f357283b7e.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/props/textures/Platform_Constructed_RoughnessTexture.png"
|
||||
dest_files=["res://.godot/imported/Platform_Constructed_RoughnessTexture.png-9963302ccb2e73dd0c9033f357283b7e.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
|
@ -0,0 +1,52 @@
|
|||
class_name AutoPathFollow extends PathFollow3D
|
||||
|
||||
@export var speed: float = 1.0
|
||||
@export var pause_at_ends: float = 1.0
|
||||
@export var body: AnimatableBody3D
|
||||
@export var area: Area3D
|
||||
|
||||
@onready var _prev_position := global_position
|
||||
@onready var _area_bodies: Array[Character] = []
|
||||
|
||||
var direction: float = 1.0
|
||||
var pause_timer: float = 0.0
|
||||
|
||||
func _ready() -> void:
|
||||
if area:
|
||||
area.body_entered.connect(_on_area_body_entered)
|
||||
area.body_exited.connect(_on_area_body_exited)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if pause_timer > 0.0:
|
||||
pause_timer -= delta
|
||||
else:
|
||||
progress += direction*speed*delta
|
||||
if !loop && (
|
||||
(direction > 0.0 && progress_ratio >= 1.0) ||
|
||||
(direction < 0.0 && progress_ratio <= 0.0)
|
||||
):
|
||||
progress_ratio = clamp(progress_ratio, 0.0, 1.0)
|
||||
direction *= -1.0
|
||||
pause_timer = pause_at_ends
|
||||
var velocity := (global_position - _prev_position).normalized()*speed
|
||||
_prev_position = global_position
|
||||
if body:
|
||||
body.global_position = global_position
|
||||
body.constant_linear_velocity = velocity
|
||||
for ch in _area_bodies:
|
||||
if ch.impetus.is_zero_approx() && ch.is_grounded():
|
||||
ch.state = &'idle'
|
||||
var veldiff := velocity - ch.linear_velocity
|
||||
veldiff -= veldiff.project(global_basis.y)
|
||||
ch.apply_central_impulse(ch.mass*veldiff)
|
||||
|
||||
func _on_area_body_entered(pbody: Node3D) -> void:
|
||||
var ch := pbody as Character
|
||||
if ch && _area_bodies.count(ch) <= 0:
|
||||
_area_bodies.push_back(ch)
|
||||
|
||||
func _on_area_body_exited(pbody: Node3D) -> void:
|
||||
var ch := pbody as Character
|
||||
if ch:
|
||||
while _area_bodies.count(ch) > 0:
|
||||
_area_bodies.erase(ch)
|
|
@ -0,0 +1 @@
|
|||
uid://bk4rnp6ytjley
|
|
@ -0,0 +1,34 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://dsgofpf33wf3c"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bk4rnp6ytjley" path="res://props/auto_path_follow.gd" id="1_8irhf"]
|
||||
[ext_resource type="PackedScene" uid="uid://dkr18e7uct18e" path="res://models/props/platform_constructed.blend" id="1_nde2r"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_goegf"]
|
||||
height = 0.196957
|
||||
radius = 0.912598
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_8irhf"]
|
||||
height = 1.67555
|
||||
radius = 0.93457
|
||||
|
||||
[node name="PlatformConstructed" type="PathFollow3D" node_paths=PackedStringArray("body", "area")]
|
||||
rotation_mode = 0
|
||||
loop = false
|
||||
script = ExtResource("1_8irhf")
|
||||
body = NodePath("AnimatableBody3D")
|
||||
area = NodePath("Area3D")
|
||||
|
||||
[node name="AnimatableBody3D" type="AnimatableBody3D" parent="."]
|
||||
top_level = true
|
||||
|
||||
[node name="platform_constructed" parent="AnimatableBody3D" instance=ExtResource("1_nde2r")]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="AnimatableBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.338884, 0)
|
||||
shape = SubResource("CylinderShape3D_goegf")
|
||||
|
||||
[node name="Area3D" type="Area3D" parent="."]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.07398, 0)
|
||||
shape = SubResource("CylinderShape3D_8irhf")
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=18 format=3 uid="uid://6wjqqijnie4p"]
|
||||
[gd_scene load_steps=21 format=3 uid="uid://6wjqqijnie4p"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cmoaplk7fly6y" path="res://vfx/gameplay_camera.gd" id="1_qjty2"]
|
||||
[ext_resource type="Texture2D" uid="uid://b334g66yuhwtv" path="res://vfx/textures/skybox1.png" id="2_p5rwy"]
|
||||
|
@ -11,6 +11,7 @@
|
|||
[ext_resource type="Script" uid="uid://dotkfe7cs5010" path="res://test/pick_up_item.gd" id="10_ld4ib"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddga068u8m4i3" path="res://props/speedpad.tscn" id="10_qjty2"]
|
||||
[ext_resource type="PackedScene" uid="uid://img70a34s4vc" path="res://props/speedpad_constructed.tscn" id="11_vhybo"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsgofpf33wf3c" path="res://props/platform_constructed.tscn" id="12_sj3fr"]
|
||||
|
||||
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_sj3fr"]
|
||||
panorama = ExtResource("2_p5rwy")
|
||||
|
@ -32,6 +33,20 @@ radius = 0.25
|
|||
radius = 0.25
|
||||
height = 0.5
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_bbrum"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.9595, 3.86243, -6.24864, 0, 0, 0, 0, 0, 0, 17.9047, 12.2205, -33.7942),
|
||||
"tilts": PackedFloat32Array(0, 0, 0)
|
||||
}
|
||||
point_count = 3
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_sj3fr"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.1118, 0, 3.82243, 0, 0, 0, 0, 0, 0, -4.31411, 0, 13.1698),
|
||||
"tilts": PackedFloat32Array(0, 0, 0)
|
||||
}
|
||||
point_count = 3
|
||||
|
||||
[node name="Node3D" type="Node3D"]
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." node_paths=PackedStringArray("target")]
|
||||
|
@ -96,4 +111,18 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1043, 0.0802538, 15.8815)
|
|||
[node name="SpeedpadConstructed" parent="." instance=ExtResource("11_vhybo")]
|
||||
transform = Transform3D(0.696314, 0, -0.717737, 0, 1, 0, 0.717737, 0, 0.696314, -37.1813, 0.0469734, 8.76293)
|
||||
|
||||
[node name="Path3D" type="Path3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.1829, 35.8037, 44.9246)
|
||||
curve = SubResource("Curve3D_bbrum")
|
||||
|
||||
[node name="PlatformConstructed" parent="Path3D" instance=ExtResource("12_sj3fr")]
|
||||
speed = 2.0
|
||||
|
||||
[node name="Path3D2" type="Path3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.827824, 0)
|
||||
curve = SubResource("Curve3D_sj3fr")
|
||||
|
||||
[node name="PlatformConstructed2" parent="Path3D2" instance=ExtResource("12_sj3fr")]
|
||||
speed = 2.0
|
||||
|
||||
[editable path="StaticBody3D/blender_test_map"]
|
||||
|
|
Loading…
Reference in New Issue