Menu
CoddyTech

Jangkauan Meriam

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 61 dari 63.

Sebuah meriam berada di salah satu ujung lapangan tembak, dan tiga target bergerak ke samping melintasi lapangan pada jarak yang berbeda. Kamu memiringkan laras ke atas dan ke bawah untuk menjangkau setiap jarak, lalu mengatur waktu tembakan agar bola ditembakkan saat target melintasi garis tembak. Bola yang mengenai target akan menghancurkannya dan habis terpakai; apa pun selain bola yang menabrak target tidak akan memengaruhinya. Target adalah body kinematik, jadi benturan tidak akan pernah mendorongnya, dan meriam memiliki lima bola.

Tulis dua script: Cannon pada Barrel dan Target pada setiap target.

challenge icon

Tantangan

Sulit

Inspector memberi Cannon ballPrefab (sebuah Rigidbody: prefab Ball, massa 2, diberi tag Ball), angle (30), turnSpeed (40), power (30), dan balls (5).

  • Tombol panah atas menaikkan angle dan tombol panah bawah menurunkannya, dengan kecepatan turnSpeed derajat per detik, tidak pernah kurang dari 10 atau lebih dari 60. Setiap frame, atur rotasi laras ke Quaternion.Euler(-angle, 0, 0): di Unity, sudut x positif mengarahkan bagian depan ke bawah, jadi tanda minus memiringkannya ke atas.
  • Tombol Space menembakkan bola selama balls lebih besar dari 0: munculkan bola 1 unit di depan pusat laras, searah laras, dorong dengan Impulse sebesar power searah laras, kurangi balls sebanyak 1, lalu catat jumlah sisanya, seperti Balls left: 4. Jika tidak ada bola tersisa, tombol Space tidak melakukan apa pun.

Setiap target memiliki Rigidbody kinematik, dan Inspector memberi Target nilai speed dan range (masing-masing 2 dan 3 untuk Target1).

  • Setiap langkah fisika, gerakkan target sepanjang sumbu x dengan MovePosition pada kecepatan speed unit per detik, dan balikkan arahnya setiap kali target mencapai jarak range dari posisi awalnya.
  • Saat bola (dengan tag Ball) mengenai target, catat nama target dan hit!, seperti Target2 hit!, lalu hancurkan target dan bola. Apa pun yang bukan bola tidak akan memengaruhi target.

Tekan Play dan robohkan ketiga target, lalu tekan Check.

Coba sendiri

using UnityEngine;

public class Cannon : MonoBehaviour
{
    [SerializeField] private Rigidbody ballPrefab;
    [SerializeField] private float angle = 30f;
    [SerializeField] private float turnSpeed = 40f;
    [SerializeField] private float power = 30f;
    [SerializeField] private int balls = 5;

    void Update()
    {
        // Arahkan bidikanmu dengan tombol panah atas dan bawah, lalu tembak dengan Space
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Fisika dan Gameplay