diff --git a/Player.gd b/Player.gd index 9a3465f..5f9f66a 100644 --- a/Player.gd +++ b/Player.gd @@ -7,6 +7,9 @@ export var air_acceleration = 1 export var normal_acceleration = 6 export var gravity = 100 export var jump = 30 +var slap = 0.0 +var chargeSlap = false +var isSlap = false; export var mouse_sensitivity = 0.03 @@ -64,7 +67,22 @@ func _physics_process(delta): direction -= transform.basis.x elif Input.is_action_pressed("move_right"): direction += transform.basis.x - + + # Slappening + if Input.is_action_just_pressed("slap"): + chargeSlap = true; + elif Input.is_action_just_released("slap"): + chargeSlap = false; + isSlap = true; + else: + isSlap = false; + if (chargeSlap): + slap += delta * 1.5; + else: + slap -= delta * 8.0; + slap = clamp(slap, 0.0, 1.0) + get_node("/root/Spatial/HUD/ActualHUD/SlapGauge").fill = slap; + direction = direction.normalized() h_velocity = h_velocity.linear_interpolate(direction * speed, h_acceleration * delta) diff --git a/Scenes/Test_Scene.tscn b/Scenes/Test_Scene.tscn index 207c8f6..d670b73 100644 --- a/Scenes/Test_Scene.tscn +++ b/Scenes/Test_Scene.tscn @@ -1,11 +1,19 @@ -[gd_scene load_steps=8 format=2] + +[gd_scene load_steps=15 format=2] + [ext_resource path="res://Materials/Dark_ProtoMat.tres" type="Material" id=1] [ext_resource path="res://Scenes/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Materials/Orange_ProtoMat.tres" type="Material" id=3] [ext_resource path="res://AllSkyFree_Skyboxes/Epic_BlueSunset_EquiRect_flat.png" type="Texture" id=4] + [ext_resource path="res://Scenes/Enemy.tscn" type="PackedScene" id=5] +[ext_resource path="res://Title Timer.gd" type="Script" id=5] +[ext_resource path="res://fonts/TorontoSubwayRegular.ttf" type="DynamicFontData" id=6] +[ext_resource path="res://SlapGauge.gd" type="Script" id=7] + + [sub_resource type="PanoramaSky" id=1] panorama = ExtResource( 4 ) @@ -39,6 +47,60 @@ glow_bloom = 0.02 glow_hdr_threshold = 0.44 glow_bicubic_upscale = true +[sub_resource type="DynamicFont" id=3] +size = 88 +outline_size = 5 +outline_color = Color( 0, 0, 0, 1 ) +use_filter = true +font_data = ExtResource( 6 ) + +[sub_resource type="DynamicFont" id=4] +size = 19 +outline_size = 2 +outline_color = Color( 0, 0, 0, 1 ) +use_mipmaps = true +use_filter = true +font_data = ExtResource( 6 ) + +[sub_resource type="Theme" id=5] +default_font = SubResource( 4 ) + +[sub_resource type="Shader" id=6] +code = "shader_type canvas_item; +render_mode unshaded; + +uniform float fill; +uniform float kill; +uniform vec4 bkgcol = vec4(0.0, 0.0, 0.0, 0.3); +uniform vec4 kilcol = vec4(0.5, 0.0, 0.0, 0.3); + +void fragment() { + bool is = false; + if (fill >= UV.x) { + COLOR = vec4(UV.x,-UV.x + .5,-UV.x + 1.0,1.0); + COLOR.rgb *= vec3(cos(UV.y * 2.0) / 1.5,cos(UV.y * 2.0) / 1.5,cos(UV.y * 2.0) / 1.5); + is = true; + + if (kill >= UV.x) + COLOR.rgb += vec3(0.1,0.1,0.1); + + } + else if (UV.x > kill + 0.001) + COLOR = kilcol; + else COLOR = bkgcol; + + if ((UV.y < .2 || UV.y > 0.8) && (UV.x > kill + 0.001 || UV.x < kill - 0.001) && !is) + COLOR.a = 0.05; + +}" + +[sub_resource type="ShaderMaterial" id=7] +shader = SubResource( 6 ) +shader_param/fill = 0.0 +shader_param/kill = null +shader_param/bkgcol = Plane( 0, 0, 0, 0.3 ) +shader_param/kilcol = Plane( 0.5, 0, 0, 0.3 ) + [node name="Spatial" type="Spatial"] [node name="CSGCombiner" type="CSGCombiner" parent="."] @@ -67,5 +129,74 @@ light_color = Color( 1, 0.924276, 0.869018, 1 ) light_specular = 1.0 shadow_enabled = true + [node name="Enemy" parent="." instance=ExtResource( 5 )] transform = Transform( 0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 1.17105, 2.7605, -13.5942 ) + +[node name="HUD" type="CanvasLayer" parent="."] +__meta__ = { +"_editor_description_": "Heads Up Display" +} + +[node name="Start" type="Control" parent="HUD"] +visible = false +margin_right = 40.0 +margin_bottom = 40.0 + +[node name="Title" type="Label" parent="HUD/Start"] +anchor_left = 12.9 +anchor_top = 7.625 +anchor_right = 12.9 +anchor_bottom = 7.625 +margin_left = -439.0 +margin_top = -54.0 +margin_right = 443.0 +margin_bottom = 48.0 +custom_fonts/font = SubResource( 3 ) +text = "FIRST PERSON SLAPPER" + +[node name="Title Timer" type="Timer" parent="HUD/Start"] +one_shot = true +script = ExtResource( 5 ) + +[node name="New Game" type="Button" parent="HUD/Start"] +anchor_left = 12.85 +anchor_top = 10.525 +anchor_right = 12.85 +anchor_bottom = 10.525 +margin_left = -67.0 +margin_top = -20.0 +margin_right = 70.0 +margin_bottom = 16.0 +theme = SubResource( 5 ) +text = "New Game" + +[node name="ActualHUD" type="Control" parent="HUD"] +margin_right = 40.0 +margin_bottom = 40.0 +theme = SubResource( 5 ) + +[node name="SlapGauge" type="ColorRect" parent="HUD/ActualHUD"] +material = SubResource( 7 ) +anchor_left = 12.875 +anchor_top = 7.625 +anchor_right = 12.875 +anchor_bottom = 7.625 +margin_left = -451.0 +margin_top = 218.0 +margin_right = -161.0 +margin_bottom = 241.0 +script = ExtResource( 7 ) + +[node name="SlapLabel" type="Label" parent="HUD/ActualHUD"] +modulate = Color( 1, 1, 1, 0.611765 ) +anchor_left = 12.662 +anchor_top = 7.324 +anchor_right = 12.662 +anchor_bottom = 7.324 +margin_left = -436.48 +margin_top = 229.04 +margin_right = -325.48 +margin_bottom = 261.04 +text = "Slap" + diff --git a/SlapGauge.gd b/SlapGauge.gd new file mode 100644 index 0000000..f94e833 --- /dev/null +++ b/SlapGauge.gd @@ -0,0 +1,14 @@ +extends ColorRect + +var Mat; +var fill = 0.0; +var kill = 0.66; + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass + +func _process(delta): + material.set_shader_param("fill",clamp(fill, 0.0, 1.0)) + material.set_shader_param("kill",clamp(kill, 0.0, 1.0)) + diff --git a/Title Timer.gd b/Title Timer.gd new file mode 100644 index 0000000..d757478 --- /dev/null +++ b/Title Timer.gd @@ -0,0 +1,17 @@ +extends Timer + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + diff --git a/project.godot b/project.godot index cfde521..7e8a7c4 100644 --- a/project.godot +++ b/project.godot @@ -59,6 +59,11 @@ sprint={ "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } +slap={ +"deadzone": 0.5, +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) + ] +} [physics]