From a0f3a249ab541352badd586e0f7cba0ea66c7b6f Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Thu, 19 Jul 2018 15:37:08 +0200 Subject: [PATCH] Add ground collision --- Level_01.tscn | 2 +- MeshLibrary.tscn | 25 +++++++++++++++++++++++-- Player.gd | 13 +++++++++++-- mlib.meshlib | Bin 3658 -> 67327 bytes 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/Level_01.tscn b/Level_01.tscn index d1afd54..1c5982b 100644 --- a/Level_01.tscn +++ b/Level_01.tscn @@ -17,7 +17,7 @@ cell_scale = 1.0 collision_layer = 1 collision_mask = 1 data = { -"cells": PoolIntArray( 0, 0, 1441792, 65534, 0, 1441792, 65535, 0, 1441792, 0, 65534, 1441792, 65534, 65534, 1441792, 65535, 65534, 1441792, 0, 65535, 1441792, 65534, 65535, 1441792 ) +"cells": PoolIntArray( 0, 0, 1612054528, 65534, 0, 1441792, 65535, 0, 1441792, 0, 65534, 1612054528, 65534, 65534, 1441792, 65535, 65534, 1441792, 0, 65535, 1441792, 65534, 65535, 1441792 ) } _sections_unfolded = [ "Cell", "Collision", "Transform", "Visibility" ] __meta__ = { diff --git a/MeshLibrary.tscn b/MeshLibrary.tscn index 5966c6b..6f85ffd 100644 --- a/MeshLibrary.tscn +++ b/MeshLibrary.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] [sub_resource type="CubeMesh" id=1] @@ -59,6 +59,10 @@ proximity_fade_enable = false distance_fade_enable = false _sections_unfolded = [ "Albedo" ] +[sub_resource type="BoxShape" id=6] + +extents = Vector3( 1, 1, 1 ) + [sub_resource type="CubeMesh" id=3] size = Vector3( 2, 2, 2 ) @@ -79,7 +83,7 @@ void fragment() { render_priority = 0 shader = SubResource( 4 ) -[node name="Spatial" type="Spatial"] +[node name="Spatial" type="Spatial" index="0"] [node name="MeshSpatial" type="MeshInstance" parent="." index="0"] @@ -98,6 +102,23 @@ skeleton = NodePath("..") material/0 = SubResource( 2 ) _sections_unfolded = [ "material" ] +[node name="StaticBody" type="StaticBody" parent="MeshSpatial" index="0"] + +input_ray_pickable = true +input_capture_on_drag = false +collision_layer = 1 +collision_mask = 1 +friction = 1.0 +bounce = 0.0 +constant_linear_velocity = Vector3( 0, 0, 0 ) +constant_angular_velocity = Vector3( 0, 0, 0 ) +_sections_unfolded = [ "Collision" ] + +[node name="CollisionShape" type="CollisionShape" parent="MeshSpatial/StaticBody" index="0"] + +shape = SubResource( 6 ) +disabled = false + [node name="Camera" type="Camera" parent="." index="1"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 ) diff --git a/Player.gd b/Player.gd index 9c7d4f7..5255edf 100644 --- a/Player.gd +++ b/Player.gd @@ -1,11 +1,14 @@ extends KinematicBody +const norm_gravity = -80 var velocity = Vector3() +const MAX_SLOPE_ANGLE = 60 func _ready(): print("player init") func _physics_process(delta): + # Keyboard input var direction = Vector3() if Input.is_action_pressed("ui_up"): @@ -20,9 +23,15 @@ func _physics_process(delta): direction.y = 0 direction = direction.normalized() - var speed = 0.2 + # Speep + var speed = 2.0 direction *= speed - self.translate(direction) + + # Gravity + direction.y = norm_gravity * delta + + # Collision + velocity = move_and_slide(direction, Vector3(0,1,0), 0.05, 4, deg2rad(MAX_SLOPE_ANGLE)) func _process(delta): # Called every frame. Delta is time since last frame. diff --git a/mlib.meshlib b/mlib.meshlib index 6b0bc8b89f8bab637538ad9192e9898a6f135f98..a4ee3e0419ef1d8d9a259d46b49aad43dbfa0675 100644 GIT binary patch literal 67327 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