From 78db85704fc13f3bde69fdad196f6701a4d5e7c9 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 17 Jul 2022 14:15:28 +0200 Subject: add arrow for charging shot --- godot/scenes/Die.gd | 57 +++++++++++++++++++++++++++++++++++++++++++-------- godot/scenes/Die.tscn | 4 ++++ 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/godot/scenes/Die.gd b/godot/scenes/Die.gd index 0d11d73..0cee70a 100644 --- a/godot/scenes/Die.gd +++ b/godot/scenes/Die.gd @@ -7,7 +7,8 @@ var camrot_v = 0 var camrot_v_locked_val = 0 var cam_v_min = -90 var cam_v_max = 90 -var sensitivity = 0.5 +var sensitivity_cam = 0.5 +var sensitivity_charge = 2 var dice_is_moving = false var last_frame_position = Vector3(1.0,1.0,1.0) var mouse_origin = Vector2(0,0) @@ -18,7 +19,7 @@ var die_launch_force_multiplier = 0.05 var die_launch_force_magnitude_max = 1000 var left_pressed = false var mat -var target_bounce = 10 +var target_bounce = 1 var default_gravity = 2 var default_bounciness = 0 @@ -40,10 +41,12 @@ func _ready(): Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) $CamRoot/Horizontal/Vertical/Camera.add_exception(self) $CamRoot.set_as_toplevel(true) + $PowerUI3D.set_as_toplevel(true) _game = get_node("/root/Game") mat = get_physics_material_override() mat.friction = 1 gravity_scale = default_gravity + $PowerUI3D/Arrow.hide() $PowerUI/PowerBar.hide() $PowerUI/PowerBar.max_value = die_launch_force_magnitude_max @@ -71,6 +74,8 @@ func _input(event): #mouse_origin = event.global_position die_launch_force_magnitude = 0 $PowerUI/PowerBar.show() + draw_arrow() + $PowerUI3D/Arrow.show() else: left_pressed = false @@ -82,18 +87,20 @@ func _input(event): if curr_buff != buff.ball: self.apply_torque_impulse(die_launch_force) $PowerUI/PowerBar.hide() + $PowerUI3D/Arrow.hide() _game.add_stroke() #Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) # add one to counter if event is InputEventMouseMotion: - camrot_h += -event.relative.x * sensitivity + camrot_h += -event.relative.x * sensitivity_cam if left_pressed: camrot_v = camrot_v_locked_val - die_launch_force_magnitude += event.relative.y * sensitivity + die_launch_force_magnitude += event.relative.y * sensitivity_charge $PowerUI/PowerBar.value = die_launch_force_magnitude + draw_arrow() else: - camrot_v += -event.relative.y * sensitivity + camrot_v += -event.relative.y * sensitivity_cam func _physics_process(delta): @@ -104,6 +111,9 @@ func _physics_process(delta): $CamRoot.translation.x = translation.x $CamRoot.translation.y = translation.y + 5 $CamRoot.translation.z = translation.z + $PowerUI3D.translation.x = translation.x + $PowerUI3D.translation.y = translation.y + $PowerUI3D.translation.z = translation.z if dice_is_moving == true and angular_velocity.length() < 0.1 and linear_velocity.length() < 0.1: if curr_buff != buff.ball: @@ -120,9 +130,40 @@ func _physics_process(delta): # Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass - +func _process(delta): + var rot = $CamRoot/Horizontal/Vertical/Camera.get_global_transform().basis.get_euler() + $PowerUI3D.rotation_degrees.y = rad2deg(rot.y) + 180 + print(rot.y) + +func draw_arrow(): + var l = 1 + 5 * clamp(die_launch_force_magnitude, 0, die_launch_force_magnitude_max) / die_launch_force_magnitude_max + var vertices = PoolVector3Array([ + # base left + Vector3( 0.2, 0, 0), + Vector3( 0.2, 0, l), + Vector3(-0.2, 0, l), + # base right + Vector3( 0.2, 0, 0), + Vector3(-0.2, 0, l), + Vector3(-0.2, 0, 0), + # tip + Vector3( 0.4, 0, l), + Vector3(-0.0, 0, l + 0.4), + Vector3(-0.4, 0, l), + ]) + var st = SurfaceTool.new() + var m = SpatialMaterial.new() + var color = Color(0.9, 0.1, 0.1) + m.albedo_color = color + st.begin(Mesh.PRIMITIVE_TRIANGLES) + st.set_material(m) + for v in vertices.size(): + st.add_color(color) + st.add_uv(Vector2(0,0)) + st.add_vertex(vertices[v]) + var tmpMesh = Mesh.new() + st.commit(tmpMesh) + $PowerUI3D/Arrow.mesh = tmpMesh """ BUFFS diff --git a/godot/scenes/Die.tscn b/godot/scenes/Die.tscn index bab53ad..4e9cd2b 100644 --- a/godot/scenes/Die.tscn +++ b/godot/scenes/Die.tscn @@ -146,3 +146,7 @@ margin_left = 64.0 margin_top = 44.0 margin_right = 1185.0 margin_bottom = 153.0 + +[node name="PowerUI3D" type="Spatial" parent="."] + +[node name="Arrow" type="MeshInstance" parent="PowerUI3D"] -- cgit From 1b015a5989a3da04f08aaa06db444c875ea97df1 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 17 Jul 2022 14:45:57 +0200 Subject: add reticle when die is still. die is still after 200ms --- godot/assets/textures/circles.png | 3 +++ godot/assets/textures/circles.png.import | 3 +++ godot/scenes/Die.gd | 20 ++++++++++++++++---- godot/scenes/Die.tscn | 10 +++++++++- godot/scenes/levels/MainMenu.tscn | 1 + 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 godot/assets/textures/circles.png create mode 100644 godot/assets/textures/circles.png.import diff --git a/godot/assets/textures/circles.png b/godot/assets/textures/circles.png new file mode 100644 index 0000000..4e0f2a9 --- /dev/null +++ b/godot/assets/textures/circles.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb7e9f2f5de95391413875ac0dd0f720543dbf69fab1f9635ce60ea6006687ae +size 74928 diff --git a/godot/assets/textures/circles.png.import b/godot/assets/textures/circles.png.import new file mode 100644 index 0000000..1a9ac1c --- /dev/null +++ b/godot/assets/textures/circles.png.import @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bd9f3320ba422578d5b451a13f83dacf76effedf87905570a549c540c964341 +size 909 diff --git a/godot/scenes/Die.gd b/godot/scenes/Die.gd index 0cee70a..466366b 100644 --- a/godot/scenes/Die.gd +++ b/godot/scenes/Die.gd @@ -9,7 +9,9 @@ var cam_v_min = -90 var cam_v_max = 90 var sensitivity_cam = 0.5 var sensitivity_charge = 2 -var dice_is_moving = false +var dice_is_moving = true +var dice_is_still_since = 0 +var dice_still_timing = false var last_frame_position = Vector3(1.0,1.0,1.0) var mouse_origin = Vector2(0,0) var die_launch_force_magnitude = 0 @@ -115,9 +117,19 @@ func _physics_process(delta): $PowerUI3D.translation.y = translation.y $PowerUI3D.translation.z = translation.z - if dice_is_moving == true and angular_velocity.length() < 0.1 and linear_velocity.length() < 0.1: + if dice_is_moving == true and dice_still_timing == false and angular_velocity.length() < 0.1 and linear_velocity.length() < 0.1: + dice_is_still_since = OS.get_ticks_msec() + dice_still_timing = true + + elif dice_is_moving == false and angular_velocity.length() >= 0.1 and linear_velocity.length() >= 0.1: + dice_still_timing = false + dice_is_moving = true + $PowerUI3D/SpriteCircles.hide() + + if dice_still_timing == true && (OS.get_ticks_msec() - dice_is_still_since) > 200: if curr_buff != buff.ball: dice_is_moving = false + $PowerUI3D/SpriteCircles.show() revert_current_buff() var last_buff = curr_buff curr_buff = get_buff_from_upwards_side() @@ -125,8 +137,8 @@ func _physics_process(delta): return apply_buff() - elif dice_is_moving == false and angular_velocity.length() >= 0.1 and linear_velocity.length() >= 0.1: - dice_is_moving = true + + # Called every frame. 'delta' is the elapsed time since the previous frame. diff --git a/godot/scenes/Die.tscn b/godot/scenes/Die.tscn index 4e9cd2b..b2ad6da 100644 --- a/godot/scenes/Die.tscn +++ b/godot/scenes/Die.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://scenes/Die.gd" type="Script" id=1] [ext_resource path="res://assets/game_objects/W8baseColor_Mat.material" type="Material" id=2] +[ext_resource path="res://assets/textures/circles.png" type="Texture" id=3] [sub_resource type="PhysicsMaterial" id=7] friction = 0.0 @@ -150,3 +151,10 @@ margin_bottom = 153.0 [node name="PowerUI3D" type="Spatial" parent="."] [node name="Arrow" type="MeshInstance" parent="PowerUI3D"] + +[node name="SpriteCircles" type="Sprite3D" parent="PowerUI3D"] +cast_shadow = 0 +opacity = 0.43 +pixel_size = 0.0071 +axis = 1 +texture = ExtResource( 3 ) diff --git a/godot/scenes/levels/MainMenu.tscn b/godot/scenes/levels/MainMenu.tscn index 438de12..77c50b1 100644 --- a/godot/scenes/levels/MainMenu.tscn +++ b/godot/scenes/levels/MainMenu.tscn @@ -58,6 +58,7 @@ script = ExtResource( 3 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 5, 0 ) +current = true [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = ExtResource( 4 ) -- cgit