45 lines
905 B
GDScript
45 lines
905 B
GDScript
'''
|
|
此类为工具体积类,主要为检测玩家是否进入了检测体积。
|
|
'''
|
|
class_name PlayerTriggerVolumn
|
|
extends Area2D
|
|
|
|
@export var debug_print: bool = false
|
|
|
|
signal player_entered(body:CharacterBody2D)
|
|
signal player_exit(body:CharacterBody2D)
|
|
|
|
var _cached_player : Player
|
|
|
|
func _ready() -> void:
|
|
self.body_entered.connect(_on_body_enter)
|
|
self.body_exited.connect(_on_body_exit)
|
|
|
|
func _on_body_enter(body:Node2D) -> void:
|
|
if not body.is_in_group("PLAYER"):
|
|
return
|
|
|
|
var p = body as Player
|
|
if not p: return
|
|
|
|
if debug_print:
|
|
print("[TiggerVolumn]: Player Entered")
|
|
|
|
_cached_player = p
|
|
player_entered.emit(p)
|
|
|
|
func _on_body_exit(body:Node2D) -> void:
|
|
if not _cached_player: return
|
|
|
|
if not body.is_in_group("PLAYER"):
|
|
return
|
|
|
|
var p = body as Player
|
|
if not p: return
|
|
|
|
if debug_print:
|
|
print("[TiggerVolumn]: Player Exited")
|
|
|
|
_cached_player = null
|
|
player_exit.emit(p)
|