pretty happy with hud minimap
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
[sub_resource type="CylinderMesh" id="CylinderMesh_oai8k"]
|
[sub_resource type="CylinderMesh" id="CylinderMesh_oai8k"]
|
||||||
top_radius = 0.05
|
top_radius = 0.05
|
||||||
bottom_radius = 0.05
|
bottom_radius = 0.05
|
||||||
height = 20.0
|
height = 1.0
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oai8k"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oai8k"]
|
||||||
transparency = 1
|
transparency = 1
|
||||||
@@ -15,6 +15,6 @@ emission_energy_multiplier = 10.0
|
|||||||
[node name="enemyTargetMarker" type="Node3D"]
|
[node name="enemyTargetMarker" type="Node3D"]
|
||||||
|
|
||||||
[node name="Node3D" type="MeshInstance3D" parent="."]
|
[node name="Node3D" type="MeshInstance3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
mesh = SubResource("CylinderMesh_oai8k")
|
mesh = SubResource("CylinderMesh_oai8k")
|
||||||
surface_material_override/0 = SubResource("StandardMaterial3D_oai8k")
|
surface_material_override/0 = SubResource("StandardMaterial3D_oai8k")
|
||||||
|
|||||||
18
hud.tscn
18
hud.tscn
@@ -51,11 +51,21 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("5_1xsix")
|
script = ExtResource("5_1xsix")
|
||||||
|
|
||||||
[node name="Minimap" type="Control" parent="StaticItems"]
|
[node name="Minimap" type="Control" parent="StaticItems" node_paths=PackedStringArray("hud")]
|
||||||
anchors_preset = 0
|
layout_mode = 1
|
||||||
offset_right = 40.0
|
anchors_preset = 8
|
||||||
offset_bottom = 40.0
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -20.0
|
||||||
|
offset_top = -20.0
|
||||||
|
offset_right = 20.0
|
||||||
|
offset_bottom = 20.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
script = ExtResource("3_640wx")
|
script = ExtResource("3_640wx")
|
||||||
|
hud = NodePath("../..")
|
||||||
|
|
||||||
[node name="WobbleItems" type="Control" parent="."]
|
[node name="WobbleItems" type="Control" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ time_to_kill = 20.0
|
|||||||
|
|
||||||
[node name="Level" type="Node3D" parent="."]
|
[node name="Level" type="Node3D" parent="."]
|
||||||
script = ExtResource("3_25f4w")
|
script = ExtResource("3_25f4w")
|
||||||
start_enemies = 10
|
start_enemies = 15
|
||||||
|
|
||||||
[node name="EnemySpawner" parent="Level" instance=ExtResource("5_idky0")]
|
[node name="EnemySpawner" parent="Level" instance=ExtResource("5_idky0")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 46.8788, 1.54828, 7.20375)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 46.8788, 1.54828, 7.20375)
|
||||||
|
|||||||
@@ -18,11 +18,17 @@ func Enter():
|
|||||||
clear_points_of_interest()
|
clear_points_of_interest()
|
||||||
|
|
||||||
func Physics_Update(delta):
|
func Physics_Update(delta):
|
||||||
|
update_minimap(0,2.0,ColorSwatch.RED_COLOR)
|
||||||
if enemy.is_player_visible():
|
if enemy.is_player_visible():
|
||||||
#reset lost target timer
|
#reset lost target timer
|
||||||
lost_target_timer = time_to_lose_target
|
lost_target_timer = time_to_lose_target
|
||||||
#attack move and look
|
#get player location
|
||||||
attack_move_and_look(delta)
|
enemy.cache_player_pos()
|
||||||
|
#set player location as target
|
||||||
|
update_player_target()
|
||||||
|
#move and look at location
|
||||||
|
move_to_nav_point(delta)
|
||||||
|
turret_look3D(delta)
|
||||||
#Initial wait time
|
#Initial wait time
|
||||||
if initial_timer > 0:
|
if initial_timer > 0:
|
||||||
initial_timer -= delta
|
initial_timer -= delta
|
||||||
@@ -37,19 +43,12 @@ func Physics_Update(delta):
|
|||||||
else:
|
else:
|
||||||
if lost_target_timer > 0:
|
if lost_target_timer > 0:
|
||||||
lost_target_timer -= delta
|
lost_target_timer -= delta
|
||||||
attack_move_and_look(delta)
|
#move and look at location
|
||||||
|
move_to_nav_point(delta)
|
||||||
|
turret_look3D(delta)
|
||||||
else:
|
else:
|
||||||
Transitioned.emit(self,"search")
|
Transitioned.emit(self,"search")
|
||||||
|
|
||||||
func attack_move_and_look(delta):
|
|
||||||
#get player location
|
|
||||||
enemy.cache_player_pos()
|
|
||||||
#set player location as target
|
|
||||||
update_player_target()
|
|
||||||
#move and look at location
|
|
||||||
move_to_nav_point(delta)
|
|
||||||
turret_look3D(delta)
|
|
||||||
|
|
||||||
func attack_sequence(delta):
|
func attack_sequence(delta):
|
||||||
if shot_timer > 0:
|
if shot_timer > 0:
|
||||||
shot_timer -= delta
|
shot_timer -= delta
|
||||||
@@ -94,6 +93,3 @@ func spawn_casing():
|
|||||||
instance_casing.transform.basis = enemy.casing_ejector.global_transform.basis
|
instance_casing.transform.basis = enemy.casing_ejector.global_transform.basis
|
||||||
instance_casing.player_velocity = enemy.velocity * enemy.transform.basis
|
instance_casing.player_velocity = enemy.velocity * enemy.transform.basis
|
||||||
get_tree().get_root().add_child(instance_casing)
|
get_tree().get_root().add_child(instance_casing)
|
||||||
|
|
||||||
func update_minimap():
|
|
||||||
SignalBus.emit_signal("ui_minimap_point",self,enemy.global_position,ColorSwatch.RED_COLOR)
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ func Enter():
|
|||||||
get_new_point_of_interest()
|
get_new_point_of_interest()
|
||||||
|
|
||||||
func Update(delta):
|
func Update(delta):
|
||||||
|
update_minimap(0,1.0,ColorSwatch.ORANGE_COLOR)
|
||||||
attack_on_sight()
|
attack_on_sight()
|
||||||
#on timeout change scan direction
|
#on timeout change scan direction
|
||||||
if scan_timer > 0:
|
if scan_timer > 0:
|
||||||
|
|||||||
@@ -156,3 +156,6 @@ func debug_marker(target_pos):
|
|||||||
enemy.debug_tracker.global_position = target_pos
|
enemy.debug_tracker.global_position = target_pos
|
||||||
else:
|
else:
|
||||||
enemy.debug_tracker.visible = false
|
enemy.debug_tracker.visible = false
|
||||||
|
|
||||||
|
func update_minimap(priority,duration,color):
|
||||||
|
SignalBus.emit_signal("ui_minimap_point",enemy,enemy.global_position,1,duration,color)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func _process(delta: float) -> void:
|
|||||||
if target_enemy != null:
|
if target_enemy != null:
|
||||||
update_minimap()
|
update_minimap()
|
||||||
if timer > 0:
|
if timer > 0:
|
||||||
timer -= delta
|
timer -= delta * Engine.time_scale
|
||||||
update_timer("kill target")
|
update_timer("kill target")
|
||||||
else:
|
else:
|
||||||
level_control.last_hit = target_enemy
|
level_control.last_hit = target_enemy
|
||||||
@@ -41,7 +41,7 @@ func _process(delta: float) -> void:
|
|||||||
select_random_enemy()
|
select_random_enemy()
|
||||||
|
|
||||||
func update_minimap():
|
func update_minimap():
|
||||||
SignalBus.emit_signal("ui_minimap_point",self,ui_marker.global_position,ColorSwatch.GREEN_COLOR)
|
SignalBus.emit_signal("ui_minimap_point",self,ui_marker.global_position,3,5.0,ColorSwatch.GREEN_COLOR)
|
||||||
|
|
||||||
func update_timer(label):
|
func update_timer(label):
|
||||||
var rounded_timer = str(timer).pad_decimals(2)
|
var rounded_timer = str(timer).pad_decimals(2)
|
||||||
@@ -59,7 +59,7 @@ func add_marker_to_enemy():
|
|||||||
if target_enemy != null:
|
if target_enemy != null:
|
||||||
var instance_marker = marker.instantiate()
|
var instance_marker = marker.instantiate()
|
||||||
target_enemy.add_child(instance_marker)
|
target_enemy.add_child(instance_marker)
|
||||||
instance_marker.global_position = target_enemy.global_position
|
instance_marker.global_position = target_enemy.global_position + Vector3(0,3,0)
|
||||||
ui_marker = instance_marker
|
ui_marker = instance_marker
|
||||||
|
|
||||||
func select_random_enemy():
|
func select_random_enemy():
|
||||||
|
|||||||
@@ -168,9 +168,9 @@ func spawn_notifs():
|
|||||||
await get_tree().create_timer(.2).timeout
|
await get_tree().create_timer(.2).timeout
|
||||||
can_spawn = true
|
can_spawn = true
|
||||||
|
|
||||||
func add_minimap_point(node_owner,point_position,color):
|
func add_minimap_point(node_owner,point_position,priority,duration,color):
|
||||||
var key = node_owner.name
|
var key = node_owner.name
|
||||||
var data = {"position" : point_position,"color" : color}
|
var data = {"position" : point_position,"priority" : priority,"timer" : duration, "color" : color}
|
||||||
minimap_points[key] = data
|
minimap_points[key] = data
|
||||||
|
|
||||||
func player_hit():
|
func player_hit():
|
||||||
|
|||||||
@@ -6,6 +6,16 @@ extends Control
|
|||||||
## SETTINGS
|
## SETTINGS
|
||||||
const MINIMAP_POINT_RADIUS :float = 10.0
|
const MINIMAP_POINT_RADIUS :float = 10.0
|
||||||
const MINIMAP_DISPLAY_RADIUS : float = 200.0
|
const MINIMAP_DISPLAY_RADIUS : float = 200.0
|
||||||
|
const MINIMAP_MAX_OPACITY : float = .75
|
||||||
|
const ERASE_BUFFER_TIME = -10.0
|
||||||
|
const MAX_PRIORITY_SIZE = 4
|
||||||
|
|
||||||
|
var draw_delta_time
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
position = hud.viewportCenter
|
||||||
|
draw_delta_time = delta #this workaround sucks, fix it later
|
||||||
|
queue_redraw()
|
||||||
|
|
||||||
func _draw() -> void:
|
func _draw() -> void:
|
||||||
update_minimap()
|
update_minimap()
|
||||||
@@ -16,14 +26,26 @@ func update_minimap():
|
|||||||
|
|
||||||
for key in minimap_points:
|
for key in minimap_points:
|
||||||
var point = minimap_points[key]
|
var point = minimap_points[key]
|
||||||
var player_pos_h = Vector2(player.global_position.x,player.global_position.z)
|
if point["timer"] > 0:
|
||||||
var point_pos_h = Vector2(point["position"].x,point["position"].z)
|
point["timer"] -= draw_delta_time
|
||||||
var h_direction = (point_pos_h - player_pos_h).normalized()
|
var player_pos_h = Vector2(player.global_position.x,player.global_position.z)
|
||||||
var v_direction = point["position"].y - player.global_position.y
|
var point_pos_h = Vector2(point["position"].x,point["position"].z)
|
||||||
|
var h_direction = player.global_transform.looking_at(point["position"],Vector3.UP).basis.get_euler().y
|
||||||
|
|
||||||
|
var alpha_fade = clamp(MINIMAP_MAX_OPACITY * clamp(point["timer"],0,1),0,MINIMAP_MAX_OPACITY)
|
||||||
|
var color_modified = Color(point["color"].r,point["color"].g,point["color"].b,alpha_fade)
|
||||||
|
|
||||||
#var desired_rotation = object.global_transform.looking_at(target_positon,Vector3.UP).basis.get_euler()
|
var offset = player.global_rotation.y - (TAU * .25)
|
||||||
|
|
||||||
#var point_pos =
|
var x = MINIMAP_DISPLAY_RADIUS * cos(-h_direction + offset)
|
||||||
|
var y = MINIMAP_DISPLAY_RADIUS * sin(-h_direction + offset)
|
||||||
|
var point_pos = Vector2(x,y)
|
||||||
|
|
||||||
draw_circle(point_pos,MINIMAP_POINT_RADIUS,point["color"],true)
|
var priority_clamped = clamp(point["priority"],1,MAX_PRIORITY_SIZE)
|
||||||
|
|
||||||
|
draw_circle(point_pos,MINIMAP_POINT_RADIUS * priority_clamped,color_modified,true)
|
||||||
|
else:
|
||||||
|
if point["timer"] > ERASE_BUFFER_TIME:
|
||||||
|
point["timer"] -= draw_delta_time
|
||||||
|
else:
|
||||||
|
minimap_points.erase(key)
|
||||||
|
|||||||
@@ -27,4 +27,4 @@ signal engaging_target(enemy,target_position)
|
|||||||
##UI
|
##UI
|
||||||
signal ui_timer_update(label,timer)
|
signal ui_timer_update(label,timer)
|
||||||
signal ui_timer_visibility(visible)
|
signal ui_timer_visibility(visible)
|
||||||
signal ui_minimap_point(node_owner,point_position,color)
|
signal ui_minimap_point(node_owner,point_position,priority,duration,color)
|
||||||
|
|||||||
27
scripts/wiggle_platform_1.gd
Normal file
27
scripts/wiggle_platform_1.gd
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export var wiggle_amount : Vector3 = Vector3(3,3,3)
|
||||||
|
@export var move_speed : float = 1.0
|
||||||
|
|
||||||
|
var start_position
|
||||||
|
var wiggle_point
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
start_position = global_position
|
||||||
|
get_random_wiggle_pos()
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
move_to_wiggle_point(delta)
|
||||||
|
|
||||||
|
func get_random_wiggle_pos():
|
||||||
|
var x = randf_range(-wiggle_amount.x,wiggle_amount.x)
|
||||||
|
var y = randf_range(-wiggle_amount.y,wiggle_amount.y)
|
||||||
|
var z = randf_range(-wiggle_amount.z,wiggle_amount.z)
|
||||||
|
|
||||||
|
wiggle_point = Vector3(x,y,z) + start_position
|
||||||
|
|
||||||
|
func move_to_wiggle_point(delta):
|
||||||
|
if global_position.distance_to(wiggle_point) < .1:
|
||||||
|
get_random_wiggle_pos()
|
||||||
|
else:
|
||||||
|
global_position = lerp(global_position,wiggle_point,delta * move_speed)
|
||||||
1
scripts/wiggle_platform_1.gd.uid
Normal file
1
scripts/wiggle_platform_1.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://c0l18isl3fc8
|
||||||
Reference in New Issue
Block a user