iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
SideProject30

初探 Godot系列 第 2

[DAY 2] 生成 (add_child)

  • 分享至 

  • xImage
  •  

今日目標:生成物件到場景中


行前準備

  1. 首先先要建立一個要生成的目標
    其他節點 -> Sprite2D -> 建立
    https://ithelp.ithome.com.tw/upload/images/20230917/201628750Z4oWzGXne.png
    拖曳左下角檔案系統的 godot icon 加到右上屬性面板 Sprite2D 的 Texture 中
    https://ithelp.ithome.com.tw/upload/images/20230917/20162875wmzS7KU70n.png
    最後儲存場景,完成!

出發

  1. 加入主場景
    場景 -> 新建場景 -> 其他節點 -> Node -> 建立
    https://ithelp.ithome.com.tw/upload/images/20230917/20162875xokk0LgFUa.png
    對左邊的 Node 右鍵附加腳本(或上面的小 icon)建立腳本
    https://ithelp.ithome.com.tw/upload/images/20230917/20162875oJdudFbCWX.png

  2. 寫程式的時間

  • 先讓我們生成目標可以進到主場景
  • (儲存後要將 Sprite2D 的場景放入右邊 script 屬性面板變數名稱的位置)
@export var to_be_created:PackedScene

# @export:在右邊屬性面板顯現
# var:宣告變數
# to_be_created:變數名稱可以取自己想要的名字
# PackedScene:給場景用的型別(這邊不太熟,有誤歡迎修正)
  • 接著新增我們的主要邏輯--生成的方法
func spawn():
    # 宣告一個變數“godot”並將場景的實例附上
	var godot = to_be_created.instantiate() 
    # 把位置設定到滑鼠位置
	godot.position = get_viewport().get_mouse_position() 
    # 產出!
	add_child(godot) 
  • 在呼叫生成的方法前先來獲得點擊的輸入
    這是要在滑鼠點擊的位置生成物件所以先來設定對應的事件名稱
    專案 -> 專案設定 -> 輸入映射 -> 新增動作(輸入想要的名稱)-> 新增
    https://ithelp.ithome.com.tw/upload/images/20230917/201628757j4xsNwgbV.png
    接著在新增的事件右邊的 “+” -> 滑鼠按鈕 -> 滑鼠左鍵 -> 好
    https://ithelp.ithome.com.tw/upload/images/20230917/20162875KSX3Nn4ECj.png
    完成綁定

  • 接著就可以透過觸發"on_left_click",進行物件生成

func _process(delta):
	if Input.is_action_pressed("on_left_click"):
		spawn()
  1. 執行
    Yes

完成!

完整檔案:

extends Node

@export var to_be_created:PackedScene

# Called when the node enters the scene tree for the first time.
func _ready():
	pass

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
	if Input.is_action_pressed("on_left_click"):
		spawn()
	
func spawn():
	var godot = to_be_created.instantiate()
	godot.position = get_viewport().get_mouse_position()
	add_child(godot)

:)


上一篇
[DAY 1] Hello, Godot!
下一篇
[DAY 3] 移動 (position, Vector2)
系列文
初探 Godot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言