Başlatma
Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 2 / 16.
Top, oyuncu topu fırlatana kadar paletin üzerinde bekler. O zamana kadar betik, topu her karede paletin üzerine yerleştirir; böylece palet nereye giderse top da oraya gider ve fırlatılıp fırlatılmadığını bir bool hatırlar. Fırlatma, Rigidbody'nin linearVelocity değerini bir kez ayarlar. Topun Rigidbody'sinde yer çekimi kapalıdır, bu yüzden o andan itibaren bir şeye çarpana kadar bu hızla düz bir çizgide uçar.
Olta şamandırası da aynı şekilde çalışır: atış yapılana kadar oltanın ucunun altında asılı kalır.
bool cast;
void Update()
{
if (cast) return;
transform.position = rodTip.position + Vector3.down * 1.5f;
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
cast = true;
rb.linearVelocity = new Vector3(4f, 3f, 0f);
}
}wasPressedThisFrame yalnızca tuşa basıldığı karede true olur, bu nedenle her karede bir kez çalışan Update() içinde okunur. Şamandıra, (4, 3, 0) vektörünün uzunluğunda, saniyede 5 birim hızla uçar. Herhangi bir yönde tam bir hızla fırlatmak için yönü .normalized ile 1 birim uzunluğa getir, ardından hızla çarp.
Görev
KolayBall içinde:
- Bir
bool launchedekle. public void Launch(Vector3 direction)yaz:launcheddeğerini true olarak ayarlasın ve Rigidbody'ninlinearVelocitydeğerini, yönü 1 birim uzunluğa getiripspeedile çarparak ayarlasın.Update()ekle. Top fırlatılmamışken topu paddle'ın konumunun 0.5 birim üstüne yerleştirir ve Space'e basıldığındaLaunch(new Vector3(0.3f, 1f, 0f))çağırır.
Top henüz sekmiyor, bu yüzden çarptığı ilk duvarda tamamen duruyor: bir sonraki ders bunu düzeltiyor.
Play'e bas, paddle'ı hareket ettir, topu fırlat ve ardından Check'e bas.
Kendin dene
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// Sonraki adım: Space tuşuna basılarak fırlatılana kadar top raketin üzerinde durur.
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.