Menu
CoddyTech

Hareketli Platformlar

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 49 / 56.

challenge icon

Görev

Orta

Mavi platform boşluğun üzerinde ileri geri süzülmeli. Önceki dersteki her şeyi koru.

MovingPlatform sınıfını doldur:

  • Inspector'ın ayarladığı iki alan: distance (3) ve speed (1.5); ayrıca bir public Vector3 delta.
  • Başladığı noktadan +x yönünde distance birim boyunca, saniyede speed birim hızla süzülür; sonra başlangıç noktasına döner ve böyle sonsuza kadar devam eder.
  • Her karede delta, o karede ne kadar hareket ettiğini belirtir: hareketten sonraki konumu eksi hareketten önceki konumu.

CharacterController, üzerinde durduğu nesne tarafından taşınmaz: hareketli bir platformda olduğu yerde kalır ve platform altından kayıp gider. transform.position değerini hareket ettirmek de işe yaramaz: denetleyicinin bir sonraki Move çağrısı, fiziğin onu en son gördüğü noktadan başlar ve değişikliği geri alır. Player sınıfının platformla birlikte hareket etmesini sağla:

  • OnControllerColliderHit ekle. Çarpışma normalinin yönü yukarıyı gösterdiğinde (hit.normal.y 0.5'ten büyükse: oyuncu platformun üzerinde duruyordur) ve nesnede bir MovingPlatform varsa, o platformu bir alanda sakla.
  • Update içinde, o platformun delta değerini controller.Move çağrısına iletilen harekete ekle, ardından platformu unut (alanı null olarak ayarla). Oyuncu üzerinde durduğu sürece Move çağrısı platformu yeniden bulur.

Play'e bas, platformun üzerine atlayıp onunla birlikte hareket et, ardından Check'e bas.

Kendin dene

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    // Sonraki bir derste burası tamamlanacak: ileri geri süzülen bir platform.
}

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler