Oyuncuyu Takip Et
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 50 / 63.
Oyuncuyu kovalayan bir düşmanın Rigidbody bileşenine ihtiyacı vardır; böylece duvarlar onu durdurur ve düşman hem itebilir hem de itilebilir. Kovalamaca hareketinin kendisi, her fizik adımında bir kez ayarlanan ve oyuncuyu hedefleyen bir hızdır. Bu zombi, player yuvasında ne varsa ona doğru yürür:
[SerializeField] private Transform player;
[SerializeField] private float speed = 2.5f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
Vector3 toPlayer = player.position - rb.position;
toPlayer.y = 0f;
Vector3 dir = toPlayer.normalized;
rb.linearVelocity = new Vector3(dir.x * speed, rb.linearVelocity.y, dir.z * speed);
}player.position - rb.position, zombiden oyuncuya doğru yönü gösterir. Oyuncu daha yüksekte ya da alçakta durduğunda zombinin düz bir zeminde yürümesi için y değeri 0 olarak ayarlanır. normalized ise uzunluğu 1 yapar; böylece oyuncu 2 birim uzakta da olsa 20 birim uzakta da olsa zombi speed hızında yürür. Yeni hız, eski y hızını korur; böylece zombi bir basamaktan aşağı inerken yerçekimi onu aşağı çekmeye devam eder. Rigidbody bileşeninde Freeze Rotation açıktır; böylece zombi yürürken devrilmez.
Ayarladığınız hız, anında hareket etmeye ve dönmeye başlayan bir düşman oluşturur. Ağır bir düşman, bunun yerine aynı FixedUpdate içinde AddForce ile itilebilir: hız kazanır, momentumunu korur ve oyuncu yana çekildiğinde hedefini aşar. Kovalayan düşmanın Transform bileşenini hareket ettirmekten kaçının: bu, onu duvarın içine yerleştirebilir ve fizik motoru ancak sonrasında onu dışarı itebilir.
Görev
OrtaBir kaya oyuncunun peşinden yuvarlanır. Rigidbody bileşenine sahip bir top olan Boulder üzerinde Boulder betiğini yaz. Inspector, betiğe player (Player) ve force (6) değerlerini verir. Player betiği hazır: ok tuşları oyuncuyu yürütür.
- Her fizik adımında, oyuncu yakın ya da uzakta olsun,
AddForceile kayayıforcekuvvetiyle oyuncuya doğru it. - Yalnızca zemin boyunca it; oyuncu çıkıntının üzerinde dursa bile yukarı veya aşağı yönlü bir bileşen olmasın.
- Transform'unu hareket ettirme veya dönüşünü dondurma: sürtünme onu yuvarlar.
Play'e bas, kayanın etrafında daireler çizerek koş, ardından Check'e bas.
Kendin dene
using UnityEngine;
public class Boulder : MonoBehaviour
{
[SerializeField] private Transform player;
[SerializeField] private float force = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// kayayı zemin boyunca oyuncuya doğru it
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir Duvar3Tetikleyiciler
Tetikleyici ÇarpıştırıcılarOnTriggerEnterToplanabilir NesnelerÖlüm BölgeleriGiriş ve ÇıkışÖzet: Anahtar ve Kapı6Işın Atışları
Physics.RaycastRaycastHitIşınla Zemin KontrolüKatmanlar ve LayerMaskGörüş HattıOverlapSphere ve SphereCastTekrar: Lazerli Alarm Teli9Düşmanlar
Oyuncuyu Takip EtMenzil İçinde TakipDevriye ve TakipCan ve HasarGeri SavurmaTekrar: Bekçi Köpeği