Bắn đạn
Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 14 trên 36.
Nhấn E hoặc Enter (phím action) để bắn một viên đạn. Viên đạn là một cảnh, bullet.tscn. Tập lệnh riêng khiến nó bay về phía trước rồi xóa nó sau 0.8 giây. Tàu tạo một viên đạn ở mũi tàu, cho viên đạn hướng theo cùng hướng với tàu rồi thêm nó vào trò chơi:
if Input.is_action_just_pressed("action"):
var bullet = BULLET.instantiate()
bullet.position = position + Vector2.UP.rotated(rotation) * 18
bullet.rotation = rotation
get_parent().add_child(bullet)Thêm viên đạn vào nút cha của tàu. Nút con di chuyển và xoay theo nút cha, vì vậy viên đạn gắn vào tàu sẽ lắc theo tàu.
is_action_just_pressed chỉ trả về true trong khung hình khi phím được nhấn xuống. Mỗi lần nhấn sẽ bắn một viên đạn.
Thử thách
Trung bìnhBắn đạn bằng phím E.
- Thêm
const BULLET = preload("res://bullet.tscn"). - Khi vừa nhấn
action, tạo một viên đạn cách phía trước tàu 18 pixel, vớirotationcủa tàu. - Thêm viên đạn vào nút cha của tàu bằng
get_parent().add_child(bullet).
Nhấn "Chơi" rồi nhấn E: một viên đạn bay ra từ mũi tàu. Sau đó nhấn "Kiểm tra".
Tự làm thử
extends CharacterBody2D
const TURN_SPEED = 4.0
const THRUST = 300
func _physics_process(delta):
rotation += Input.get_axis("move_left", "move_right") * TURN_SPEED * delta
if Input.is_action_pressed("move_up"):
velocity += Vector2.UP.rotated(rotation) * THRUST * delta
$Flame.visible = Input.is_action_pressed("move_up")
position += velocity * delta
if position.x < 0:
position.x += 640
if position.x > 640:
position.x -= 640
if position.y < 0:
position.y += 360
if position.y > 360:
position.y -= 360
Tất cả bài học trong Dự án
1Dự án: Breakout
Thanh đỡ trong BreakoutGiữ thanh đỡ trong màn hình4Dự án: trò chơi khám phá hầm ngục
Khám phá hầm ngụcNhặt chìa khóaTự luyện tập: Playground Godot