Files
kicking-high/proto3/godot/ai/can_throw.gd
2020-04-13 12:45:25 +03:00

29 lines
753 B
GDScript

extends BTCondition
class_name BTCanThrow
func tick(tick: Tick) -> int:
var npc = tick.actor
var bb = tick.blackboard
var weapon = npc.get_meta("weapon")
if npc.is_in_group("guard"):
return FAILED
if !weapon && !npc.is_in_group("guard"):
return FAILED
var enemy = bb.get("closest_enemy")
if !enemy:
return FAILED
var enemy_pos = enemy.global_transform.origin
var npc_pos = npc.global_transform.origin
var space_state = npc.get_world().direct_space_state
var result
var up = npc.orientation.basis[1] * 0.9
var dir = (enemy_pos - npc_pos).normalized() * 10.0
result = space_state.intersect_ray(npc_pos + up, npc_pos + dir + up,
[npc], 0xffff)
if result.has("collider"):
if result.collider == enemy:
return OK
return FAILED