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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 Kf+C22k^ciPtV6v3