pretty happy with hud minimap
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_oai8k"]
|
||||
top_radius = 0.05
|
||||
bottom_radius = 0.05
|
||||
height = 20.0
|
||||
height = 1.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oai8k"]
|
||||
transparency = 1
|
||||
@@ -15,6 +15,6 @@ emission_energy_multiplier = 10.0
|
||||
[node name="enemyTargetMarker" type="Node3D"]
|
||||
|
||||
[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")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_oai8k")
|
||||
|
||||
18
hud.tscn
18
hud.tscn
@@ -51,11 +51,21 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("5_1xsix")
|
||||
|
||||
[node name="Minimap" type="Control" parent="StaticItems"]
|
||||
anchors_preset = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
[node name="Minimap" type="Control" parent="StaticItems" node_paths=PackedStringArray("hud")]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
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")
|
||||
hud = NodePath("../..")
|
||||
|
||||
[node name="WobbleItems" type="Control" parent="."]
|
||||
layout_mode = 1
|
||||
|
||||
@@ -30,7 +30,7 @@ time_to_kill = 20.0
|
||||
|
||||
[node name="Level" type="Node3D" parent="."]
|
||||
script = ExtResource("3_25f4w")
|
||||
start_enemies = 10
|
||||
start_enemies = 15
|
||||
|
||||
[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)
|
||||
|
||||
@@ -18,11 +18,17 @@ func Enter():
|
||||
clear_points_of_interest()
|
||||
|
||||
func Physics_Update(delta):
|
||||
update_minimap(0,2.0,ColorSwatch.RED_COLOR)
|
||||
if enemy.is_player_visible():
|
||||
#reset lost target timer
|
||||
lost_target_timer = time_to_lose_target
|
||||
#attack move and look
|
||||
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)
|
||||
#Initial wait time
|
||||
if initial_timer > 0:
|
||||
initial_timer -= delta
|
||||
@@ -37,19 +43,12 @@ func Physics_Update(delta):
|
||||
else:
|
||||
if lost_target_timer > 0:
|
||||
lost_target_timer -= delta
|
||||
attack_move_and_look(delta)
|
||||
#move and look at location
|
||||
move_to_nav_point(delta)
|
||||
turret_look3D(delta)
|
||||
else:
|
||||
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):
|
||||
if shot_timer > 0:
|
||||
shot_timer -= delta
|
||||
@@ -94,6 +93,3 @@ func spawn_casing():
|
||||
instance_casing.transform.basis = enemy.casing_ejector.global_transform.basis
|
||||
instance_casing.player_velocity = enemy.velocity * enemy.transform.basis
|
||||
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()
|
||||
|
||||
func Update(delta):
|
||||
update_minimap(0,1.0,ColorSwatch.ORANGE_COLOR)
|
||||
attack_on_sight()
|
||||
#on timeout change scan direction
|
||||
if scan_timer > 0:
|
||||
|
||||
@@ -156,3 +156,6 @@ func debug_marker(target_pos):
|
||||
enemy.debug_tracker.global_position = target_pos
|
||||
else:
|
||||
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:
|
||||
update_minimap()
|
||||
if timer > 0:
|
||||
timer -= delta
|
||||
timer -= delta * Engine.time_scale
|
||||
update_timer("kill target")
|
||||
else:
|
||||
level_control.last_hit = target_enemy
|
||||
@@ -41,7 +41,7 @@ func _process(delta: float) -> void:
|
||||
select_random_enemy()
|
||||
|
||||
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):
|
||||
var rounded_timer = str(timer).pad_decimals(2)
|
||||
@@ -59,7 +59,7 @@ func add_marker_to_enemy():
|
||||
if target_enemy != null:
|
||||
var instance_marker = marker.instantiate()
|
||||
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
|
||||
|
||||
func select_random_enemy():
|
||||
|
||||
@@ -168,9 +168,9 @@ func spawn_notifs():
|
||||
await get_tree().create_timer(.2).timeout
|
||||
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 data = {"position" : point_position,"color" : color}
|
||||
var data = {"position" : point_position,"priority" : priority,"timer" : duration, "color" : color}
|
||||
minimap_points[key] = data
|
||||
|
||||
func player_hit():
|
||||
|
||||
@@ -6,6 +6,16 @@ extends Control
|
||||
## SETTINGS
|
||||
const MINIMAP_POINT_RADIUS :float = 10.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:
|
||||
update_minimap()
|
||||
@@ -16,14 +26,26 @@ func update_minimap():
|
||||
|
||||
for key in minimap_points:
|
||||
var point = minimap_points[key]
|
||||
var player_pos_h = Vector2(player.global_position.x,player.global_position.z)
|
||||
var point_pos_h = Vector2(point["position"].x,point["position"].z)
|
||||
var h_direction = (point_pos_h - player_pos_h).normalized()
|
||||
var v_direction = point["position"].y - player.global_position.y
|
||||
if point["timer"] > 0:
|
||||
point["timer"] -= draw_delta_time
|
||||
var player_pos_h = Vector2(player.global_position.x,player.global_position.z)
|
||||
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
|
||||
signal ui_timer_update(label,timer)
|
||||
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