Menu
CoddyTech

Tembakkan Peluru

Termasuk bagian Proyek dalam perjalanan Godot di Coddy. Pelajaran 14 dari 36.

E atau Enter (tombol action) menembakkan peluru. Peluru adalah sebuah adegan, bullet.tscn. Skripnya sendiri menerbangkannya ke depan dan menghapusnya setelah 0.8 detik. Kapal membuat satu peluru di bagian depannya, mengarahkannya ke arah yang sama, lalu menambahkannya ke dalam game:

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)

Tambahkan peluru ke induk kapal. Objek anak bergerak dan berputar bersama induknya, jadi peluru yang berada di kapal akan ikut berayun bersamanya.

is_action_just_pressed bernilai true hanya pada frame saat tombol ditekan. Setiap tekanan menembakkan satu peluru.

challenge icon

Tantangan

Sedang

Tembakkan peluru dengan E.

  1. Tambahkan const BULLET = preload("res://bullet.tscn").
  2. Saat action baru saja ditekan, buat peluru 18 piksel di depan kapal, dengan rotation kapal.
  3. Tambahkan peluru ke parent kapal dengan get_parent().add_child(bullet).

Tekan tombol “Main” dan tekan E: peluru melesat dari bagian depan kapal. Lalu tekan tombol “Periksa”.

Coba sendiri

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

Semua pelajaran di Proyek

Latihan sendiri: Playground Godot