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.
Tantangan
SulitInspector 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
angledan tombol panah bawah menurunkannya, dengan kecepatanturnSpeedderajat per detik, tidak pernah kurang dari 10 atau lebih dari 60. Setiap frame, atur rotasi laras keQuaternion.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
ballslebih besar dari 0: munculkan bola 1 unit di depan pusat laras, searah laras, dorong dengan Impulse sebesarpowersearah laras, kurangiballssebanyak 1, lalu catat jumlah sisanya, sepertiBalls 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
MovePositionpada kecepatanspeedunit per detik, dan balikkan arahnya setiap kali target mencapai jarakrangedari posisi awalnya. - Saat bola (dengan tag
Ball) mengenai target, catat nama target danhit!, sepertiTarget2 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
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa Hancur