From 31c7af0d7172de298ae41ce39255ee502bc0b19f Mon Sep 17 00:00:00 2001 From: SyntaX Date: Sat, 23 Nov 2019 15:37:52 +0100 Subject: [PATCH] player can now collect crystals and win the game --- WikiJam/Level/Objects/Crystal.gd | 5 +---- WikiJam/Level/Objects/Crystal.tscn | 16 ++++++++-------- WikiJam/Player/Player.gd | 30 +++++++++++++++++++++--------- WikiJam/Player/Player.tscn | 3 ++- WikiJam/Player/UI/HUD.gd | 24 ++++++++++++++++-------- WikiJam/Util/Collector.gd | 1 + 6 files changed, 49 insertions(+), 30 deletions(-) diff --git a/WikiJam/Level/Objects/Crystal.gd b/WikiJam/Level/Objects/Crystal.gd index 7aa8225..c7e40e3 100644 --- a/WikiJam/Level/Objects/Crystal.gd +++ b/WikiJam/Level/Objects/Crystal.gd @@ -2,7 +2,4 @@ extends Spatial func _ready(): - Collector.addCollectible(self) - - -#TODO: handle collisions \ No newline at end of file + Collector.addCollectible(self) \ No newline at end of file diff --git a/WikiJam/Level/Objects/Crystal.tscn b/WikiJam/Level/Objects/Crystal.tscn index 5e3b8fa..3aefd1d 100644 --- a/WikiJam/Level/Objects/Crystal.tscn +++ b/WikiJam/Level/Objects/Crystal.tscn @@ -2,19 +2,19 @@ [ext_resource path="res://Level/Objects/Crystal.gd" type="Script" id=1] -[sub_resource type="CapsuleMesh" id=1] - [sub_resource type="CapsuleShape" id=2] +[sub_resource type="CapsuleMesh" id=1] + [node name="Crystal" type="Spatial"] transform = Transform( 1, 0, 0, 0, -4.37114e-008, -1, 0, 1, -4.37114e-008, 0, 2, 0 ) script = ExtResource( 1 ) -[node name="MeshInstance" type="MeshInstance" parent="."] +[node name="CrystalBody" type="StaticBody" parent="."] + +[node name="CollisionShape" type="CollisionShape" parent="CrystalBody"] +shape = SubResource( 2 ) + +[node name="MeshInstance" type="MeshInstance" parent="CrystalBody"] mesh = SubResource( 1 ) material/0 = null - -[node name="StaticBody" type="StaticBody" parent="."] - -[node name="CollisionShape" type="CollisionShape" parent="StaticBody"] -shape = SubResource( 2 ) diff --git a/WikiJam/Player/Player.gd b/WikiJam/Player/Player.gd index d59bed3..c482360 100644 --- a/WikiJam/Player/Player.gd +++ b/WikiJam/Player/Player.gd @@ -2,10 +2,9 @@ extends KinematicBody # export variables export(NodePath) var body_nodepath -#export(NodePath) var lookingAt_nodepath +export(NodePath) var camera_nodepath export(NodePath) var animation_nodepath export(NodePath) var ui_nodepath -export(NodePath) var camera_nodepath # const const GRAVITY = -24.8 @@ -20,7 +19,6 @@ const INTERACT_DISTANCE = 4 # private members var _body: Spatial var _camera: Camera -#var _lookCast: RayCast var _animation: AnimationPlayer var _interface: Control var _dir = Vector3(); @@ -39,22 +37,23 @@ func _ready(): _animation = get_node(animation_nodepath) as AnimationPlayer assert(null != _animation) - # Setup mouse look - Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - #_lookCast = get_node(lookingAt_nodepath) as RayCast - #_lookCast.cast_to = Vector3(0, 0, INTERACT_DISTANCE) - _interface = get_node(ui_nodepath) as Control assert(null != _interface) + + # Setup mouse look + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) func _physics_process(delta): _process_input() _process_movement(delta) + _process_collision() + func _process(_delta): _process_animations() + func _process_input(): # Walking var input_movement_vector = Vector2() @@ -75,7 +74,6 @@ func _process_input(): # jumping if Input.is_action_just_pressed("move_jump") and is_on_floor(): - Logger.info("current collection count: " + String(Collector.getCount())) _vel.y = JUMP_SPEED # sprinting @@ -99,6 +97,20 @@ func _process_animations(): _animation.playback_speed = _vel.length() / MOVE_SPEED +func _process_collision(): + var collCount = get_slide_count() + if collCount > 0: + #Logger.debug("Collide count: ", collCount) + for i in collCount: + var collision = get_slide_collision(i) + #Logger.debug("Collided with: ", collision.collider.name) + #TODO: replace with groups + if collision.collider.name == "CrystalBody": + #Logger.debug("removing crystal...") + collision.collider.queue_free() + _interface.increaseScore() + + func _input(event): # capture mouse movement if event is InputEventMouseMotion: diff --git a/WikiJam/Player/Player.tscn b/WikiJam/Player/Player.tscn index 7f8f429..efd8d30 100644 --- a/WikiJam/Player/Player.tscn +++ b/WikiJam/Player/Player.tscn @@ -45,9 +45,9 @@ tracks/1/keys = { [node name="Player" type="KinematicBody"] script = ExtResource( 1 ) body_nodepath = NodePath("Body") +camera_nodepath = NodePath("Camera") animation_nodepath = NodePath("WalkAnimationPlayer") ui_nodepath = NodePath("HUD") -camera_nodepath = NodePath("Camera") [node name="Body" type="Spatial" parent="."] @@ -73,6 +73,7 @@ pitch_scale = 1.5 [node name="HUD" parent="." instance=ExtResource( 4 )] script = ExtResource( 5 ) +label_nodepath = NodePath("LabelScore") [node name="LabelScore" type="Label" parent="HUD"] margin_left = 15.0 diff --git a/WikiJam/Player/UI/HUD.gd b/WikiJam/Player/UI/HUD.gd index 68638f9..d68cafb 100644 --- a/WikiJam/Player/UI/HUD.gd +++ b/WikiJam/Player/UI/HUD.gd @@ -1,13 +1,21 @@ extends Control -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" +export(NodePath) var label_nodepath + +const SCORE = 100 + +var _labelScore: Label +var _score: int = 0 + -# Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + _labelScore = get_node(label_nodepath) as Label + assert(null != _labelScore) -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass + +func increaseScore(): + _score += SCORE + _labelScore.text = "Score: " + String(_score) + if (_score / SCORE == Collector.getCount()): + Logger.info("YOU WON!") + \ No newline at end of file diff --git a/WikiJam/Util/Collector.gd b/WikiJam/Util/Collector.gd index dfe003f..c504a8e 100644 --- a/WikiJam/Util/Collector.gd +++ b/WikiJam/Util/Collector.gd @@ -5,6 +5,7 @@ var _collectibles: Array func addCollectible (coll): Logger.info("appending new collectible: " + String(coll.get_instance_id())) + Logger.info("current collection count: " + String(Collector.getCount())) _collectibles.append(coll)