Menu
CoddyTech

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.

challenge icon

Görev

Orta

Bir 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, AddForce ile kayayı force kuvvetiyle 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
    }
}
quiz iconKendini test et

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