114 lines
3.5 KiB
Plaintext
114 lines
3.5 KiB
Plaintext
[gd_scene load_steps=8 format=2]
|
|
|
|
[ext_resource path="res://Breadmouth/breadmouth_1_tex.png" type="Texture" id=1]
|
|
[ext_resource path="res://Breadmouth/breadmouth_1.obj" type="ArrayMesh" id=2]
|
|
[ext_resource path="res://Breadmouth/Breadmouth-Gurgle.mp3" type="AudioStream" id=4]
|
|
[ext_resource path="res://Breadmouth/Breadmouth-Slime.mp3" type="AudioStream" id=5]
|
|
|
|
[sub_resource type="GDScript" id=1]
|
|
script/source = "extends KinematicBody
|
|
enum states {patrol, hunt}
|
|
var path = []
|
|
var path_node = 0
|
|
var speed = 15
|
|
var total_time = 0
|
|
var state = states.patrol
|
|
onready var nav = get_parent()
|
|
onready var player = $\"../../Player\"
|
|
onready var wander = $\"../../Path/PathFollow/Wander\"
|
|
onready var visioncone = $CollisionShape
|
|
|
|
func _ready():
|
|
pass
|
|
|
|
func _process(_delta):
|
|
pass
|
|
|
|
func _physics_process(delta):
|
|
if path_node < path.size():
|
|
var direction = (path[path_node] - global_transform.origin)
|
|
if direction.length() < 1:
|
|
path_node +=1
|
|
else:
|
|
var target_position = path[path_node]
|
|
var new_transform = transform.looking_at(target_position, Vector3.UP)
|
|
transform = transform.interpolate_with(new_transform, 5 * delta)
|
|
move_and_slide(direction.normalized() * ((cos(total_time)+1)*7), Vector3.UP)
|
|
total_time += delta*2
|
|
|
|
func move_to(target_pos):
|
|
path = nav.get_simple_path(global_transform.origin, target_pos)
|
|
path_node = 0
|
|
|
|
func _on_Timer_timeout():
|
|
if state == states.hunt:
|
|
move_to(player.global_transform.origin)
|
|
elif state == states.patrol:
|
|
move_to(wander.global_transform.origin)
|
|
|
|
func _on_Gurgletimer_timeout():
|
|
$AudioStreamPlayer3D2.play(0.0)
|
|
|
|
func _on_Detection_body_entered(_body):
|
|
state = states.hunt
|
|
func _on_Detection_body_exited(_body):
|
|
state = states.patrol
|
|
"
|
|
|
|
[sub_resource type="SpatialMaterial" id=2]
|
|
albedo_texture = ExtResource( 1 )
|
|
|
|
[sub_resource type="BoxShape" id=3]
|
|
extents = Vector3( 3.5, 2, 7 )
|
|
|
|
[node name="Breadmouth" type="KinematicBody" groups=[
|
|
"Breadmouth",
|
|
]]
|
|
collision_layer = 2
|
|
collision_mask = 0
|
|
script = SubResource( 1 )
|
|
|
|
[node name="CSGMesh" type="CSGMesh" parent="."]
|
|
transform = Transform( -1.31134e-07, 0, 2, 0, 2, 0, -3, 0, -8.74228e-08, 0, 0, 0 )
|
|
mesh = ExtResource( 2 )
|
|
material = SubResource( 2 )
|
|
|
|
[node name="CollisionShape" type="CollisionShape" parent="."]
|
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0 )
|
|
shape = SubResource( 3 )
|
|
|
|
[node name="Timer" type="Timer" parent="."]
|
|
wait_time = 2.0
|
|
autostart = true
|
|
|
|
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
|
|
stream = ExtResource( 5 )
|
|
unit_db = 20.0
|
|
unit_size = 10.0
|
|
max_db = 5.0
|
|
autoplay = true
|
|
max_distance = 50.0
|
|
|
|
[node name="AudioStreamPlayer3D2" type="AudioStreamPlayer3D" parent="."]
|
|
stream = ExtResource( 4 )
|
|
unit_db = 10.0
|
|
max_db = 6.0
|
|
pitch_scale = 0.4
|
|
autoplay = true
|
|
|
|
[node name="Gurgle-timer" type="Timer" parent="."]
|
|
wait_time = 12.0
|
|
autostart = true
|
|
|
|
[node name="Detection" type="Area" parent="."]
|
|
monitorable = false
|
|
|
|
[node name="CollisionPolygon" type="CollisionPolygon" parent="Detection"]
|
|
transform = Transform( 0.5, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 2, 0 )
|
|
polygon = PoolVector2Array( -0.487793, -48.1692, -24.3895, -39.6329, -31.9502, -24.2675, -23.9017, 0.365844, -9.26801, 15.7312, 7.80463, 15.7312, 23.6578, -0.365842, 32.438, -23.5359, 23.9017, -40.1207 )
|
|
|
|
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
|
|
[connection signal="timeout" from="Gurgle-timer" to="." method="_on_Gurgletimer_timeout"]
|
|
[connection signal="body_entered" from="Detection" to="." method="_on_Detection_body_entered"]
|
|
[connection signal="body_exited" from="Detection" to="." method="_on_Detection_body_exited"]
|