Doorを継承してLockedDoorを作る
New Inherited Scene > Door
Doorを拡張する
https://gyazo.com/68cbc196ee66788c85e9899c90d2474f
Doorに、
CanvasLayer
NupmberPad (extends PopUp)
を追加した。(あとSpriteのTextureも変えた)
CanvasLayer
Nodeの直接の子Class
Nodeと同じく、tranformを持たない
Object > Node > CanvasLayer
Object > Node > CanvasItem > Control > Popup
LoockedDoor の子供に、CanvasLayer > Popup の順で子要素にする。
CanvasLayerはtranformに関係なく常に前面に表示されるので、Popupは画面中央に来る。
LoockedDoor.gd
Doorのscriptを拡張する
主に、signalに接続されているmethodをoverrride
code: LockedDoor.py
extends "res://Levels/Door.gd"
func _on_Door_input_event(viewport, event, shape_idx):
if Input.is_mouse_button_pressed(BUTTON_LEFT) and can_click:
$CanvasLayer/NumberPad.popup_centered()
func _on_Door_body_exited(body: PhysicsBody2D):
if body.collision_layer == PLAYER_LAYER:
can_click = false
$CanvasLayer/NumberPad.hide()
PopUp.
popup_centered() : 中央に表示
hide() : 隠す
queue_free()と違ってメモリ上から削除されないので、再利用できるし効率的