StaticBody2Dに接触形状を置いてフィールドを作成します。
形状の追加
ポリラインで作成した形状と、他で作成した形状を含ませます。
main.gd
extends Node2D
var map2 = preload("res://map_2.tscn")
func _ready():
var map2 = map2.instantiate()
self.add_child(map2)
pass
形状の移動(r2)
形状が移動するようにします。
MAP2のシーンに以下のスクリプトを追加します。
map_2.gd
extends StaticBody2D
var velocity = Vector2()
func _process(delta):
velocity.y = 100
position += velocity * delta
画面外で削除
VisibleOnScreenNotifier2Dシーンを追加します。
func _on_visible_on_screen_notifier_2d_screen_exited():
queue_free()
pass # Replace with function body.
リスポーン(r3)
画面外から削除された後に、新しくMAP2を発生させます。
・まず、画面内からMAP2のノードが削除されたか検査します。
検査は、main.gdにツリー名を確認する部分と判定フラグを設けます。
・map2Flag == falseの場合にリスポーンします。
main.gdに追記
var map2Flag:bool
func _process(delta):
var cnt = 0 #MAP2のカウント
#-----ツリーのノード名を検索
for child in get_children():
#print(child.name)
if "MAP2" in child.name:
cnt += 1
map2Flag = true
#print("MAP2" + str(cnt))
print("個数:" + str(cnt))
if cnt == 0:
#print("NoMAP2" )
map2Flag = false
pass
#----------------------
if map2Flag == false:
var map2 = map2.instantiate()
map2.position.x = 400 #出現位置を
self.add_child(map2)
ランダムな位置にする
スポーンするX位置をランダムにしてみます。map2.position.x = 400を含めて修正します。
if map2Flag == false:
var map2 = map2.instantiate()
map2.position.x = randum(0,800) #出現位置を
self.add_child(map2)
func randum(min_value,max_value):
#var random_number = randi(10)
#print(random_number) # 例:5
#var min_value = 0
#var max_value = 800
var random_number = randi_range(min_value, max_value)
#print(random_number) # 例:12
return random_number
繰り返し背景(V1)
背景シーンを設定して画像が循環するようにします。
上下左右キーでカメラを動かして画面を動かします。
extends Node2D
func _ready():
$Camera2D.position = Vector2(0,0)
var Dpos:float = 1000
func _process(delta: float) -> void:
var velocity = Vector2.ZERO
if Input.is_action_pressed("ui_left"):
$Camera2D.position.x -= Dpos*delta
if Input.is_action_pressed("ui_right"):
$Camera2D.position.x += Dpos*delta
if Input.is_action_pressed("ui_up"):
$Camera2D.position.y -= Dpos*delta
if Input.is_action_pressed("ui_down"):
$Camera2D.position.y += Dpos*delta
#$ParallaxBackground/ParallaxLayer/Sprite2D.position.x -= 100*delta
画像はコードでも動かせます。
$ParallaxBackground/ParallaxLayer/Sprite2D.position.x -= 100*delta
回転(V1_r1)
画像を回転させます。
$ParallaxBackground/ParallaxLayer/Sprite2D.rotation += 1*delta
カメラを回すのは未確認。
サンプルデータ
データは形状を整えてます。
Build software better, together
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over...
コメント