Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Bắn đạn bằng phím E.

  1. Thêm const BULLET = preload("res://bullet.tscn").
  2. Khi vừa nhấn action, tạo một viên đạn cách phía trước tàu 18 pixel, với rotation của tàu.
  3. 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

Tự luyện tập: Playground Godot