製作一個打飛機遊戲(2)
現在光移動還不夠,還需要發射子彈。
在bullet場景的指令碼上修改
extends Area2D
var move_speed = 300
func _ready():
connect(“body_entered”,self,“_on_body_entered”)
set_process(true)
func _process(delta):
#delta 為一幀的時間
position。y-=move_speed*delta
func _on_body_entered(obj):
#碰到物體後自己釋放
if obj。name!=“player”:
queue_free()
然後player的指令碼修改
extends KinematicBody2D
var move_speed = 200
var bullet_time = 0。2
var time=0。2
var bullet = load(“res://scene/bullet。tscn”)
func _ready():
set_process(true)
func _process(delta):
var w = Input。is_action_pressed(“w”)
var a = Input。is_action_pressed(“a”)
var s = Input。is_action_pressed(“s”)
var d = Input。is_action_pressed(“d”)
var vec = Vector2()
#檢測按鍵
if w:vec。y=-move_speed
if s:vec。y=move_speed
if a:vec。x=-move_speed
if d:vec。x=move_speed
#移動
move_and_slide(vec, Vector2(0, -1))
if Input。is_action_pressed(“space”):
time+=delta
if time>bullet_time:
time=0
var tscn = bullet。instance()
tscn。position = position
$“。。/”。add_child(tscn)
else:
time=bullet_time
然後執行,
接下來是增加敵人,
首先在最大的根節點node2d建立一個指令碼,然後再增加一個time節點 設定1秒鐘 自動迴圈走,
給敵人一個始終往下移動的指令碼
enemy。gd
extends KinematicBody2D
var move_speed = 200
func _ready():
set_process(true)
pass
func _process(delta):
var pos = Vector2(0,move_speed)
move_and_slide(pos,Vector2(0,-1))
然後在修改node2d的指令碼
extends Node2D
var enemy = load(“res://scene/enemy。tscn”)
func _ready():
#每秒走_on_timeout
$time。connect(“timeout”,self,“_on_timeout”)
func _on_timeout():
#隨機數 64 - 536
var x = randi() % 536 + 64
var tscn = enemy。instance()
tscn。position=Vector2(x,0)
add_child(tscn)
執行看下效果:
本次資源
如果你對這個引擎或是我的教程感興趣的話可以加入我的qq群:691534145
雖然裡面有很多水貨,但這應該是國內最活躍的godot engine 並且討論遊戲的討論群了。