2021-09-12 Godot Engine>보드 게임 41 게임의 실현>TileMap 단원의 연습(world to map(), getcellv(), set_cellv () 등
Windows 10 Pro v21H1
Godot Engine v3.3.2.stable.official
41 게임 설명Godot 설치
프로비저닝
TileMap에는 TileMap이 포함되어 있습니다.터치 gd.
TileMap은 다음 이미지(64x64 이미지 4개)를 사용합니다.
실제로 사용하는 건 두 번째와 네 번째밖에 없어요...
설치(TileMap.gd)
TileMap.gd
extends TileMap
enum {
CELL_TILE = 0, # タイル
CELL_BALL, # ボールが置かれている
CELL_NOT_USED, # 不使用
CELL_PICKED, # 配置できる
}
enum {
STS_DROP = 0, # ボールが置かれている
STS_PICKED, # ボールを持ちあげている
}
onready var s_state = STS_DROP
onready var label = get_node("../Label")
var s_picked
func _input(event):
if event is InputEventMouseButton:
if event.pressed == false:
return
if event.button_index != 1:
return
var mouse_tile = world_to_map(get_global_mouse_position())
var tile_id = get_cellv(mouse_tile)
print(tile_id)
if s_state == STS_DROP: # Pickup
# ボールが配置されたセルか
if tile_id != CELL_BALL:
return
set_cellv(mouse_tile, CELL_PICKED) # セル画像の変更 (Pickupした状態)
s_picked = mouse_tile # Drop時の処理に使う
# 状態とラベルの変更
s_state = STS_PICKED
label.text = "Picked"
pass
else: # Drop
# 配置できる(ボールがない)かどうか
if tile_id != CELL_PICKED:
return
# 飛び越すセル位置
var middle = (s_picked + mouse_tile) / 2
print(middle)
# 配置は縦方向か横方向のボールを飛び越すものだけ
var diff = s_picked.distance_to(middle)
print(diff)
if diff == 0:
set_cellv(mouse_tile, CELL_BALL)
s_state = STS_DROP
label.text = "Dropped"
if diff < 1 || diff > 1:
return
# 飛び越すところにボールがあるかどうか
var middle_ball = get_cellv(middle)
if middle_ball != CELL_BALL:
return
# セル画像の変更
set_cellv(mouse_tile, CELL_BALL)
set_cellv(middle, CELL_PICKED)
# 状態とラベルの変更
s_state = STS_DROP
label.text = "Dropped"
pass
실행 예Pickup의 공을 세로 또는 가로 크로스 볼 방향으로 이동할 수 있습니다.
Pickup에서 Drop(작업 취소)도 가능합니다.
마지막으로 공 하나만 있으면 통관할 수 있다.
정렬 방법
디자인 화면에서 설정을 변경하면 임의의 모드의 41을 할 수 있다.
그림을 바꿔봤어요.
참조: [Level 2] 점화로 버튼을 여러 가지 모양으로 만드는 방법[점화 강좌]
Reference
이 문제에 관하여(2021-09-12 Godot Engine>보드 게임 41 게임의 실현>TileMap 단원의 연습(world to map(), getcellv(), set_cellv () 등), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/d99b364f534a6c698ce5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)