Menu
CoddyTech

Kecepatan

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 5 dari 71.

rb.linearVelocity menunjukkan cara benda bergerak saat ini: sebuah Vector3 dalam meter per detik sepanjang sumbu x, y, dan z. Membacanya memberi tahu arah gerak benda, dan rb.linearVelocity.magnitude adalah kecepatannya. Mengaturnya langsung mengubah gerakan, tanpa peningkatan bertahap dan tanpa melibatkan massa: kotak 1 kg dan brankas 50 kg yang diatur ke 2 m/s sama-sama bergerak tepat pada 2 m/s sejak langkah fisika berikutnya. Gravitasi, gesekan, dan benturan akan terus memengaruhinya setelah itu.

Go-kart ini melaju ke depan tepat pada cruise m/s. Kode ini menyalin kecepatan, hanya mengubah z, lalu menetapkannya kembali, sehingga nilai y yang diberikan gravitasi tetap ada dan kart tetap jatuh dari ujung tanjakan:

void FixedUpdate()
{
    Vector3 vel = rb.linearVelocity;
    vel.z = cruise;            // maju dengan kecepatan tepat cruise m/s
    rb.linearVelocity = vel;   // y tetap mempertahankan nilai akibat gravitasi
}

Sekaligus mengatur y ke 0 akan menghapus kecepatan akibat gravitasi pada setiap langkah, dan kart akan melayang turun dari tanjakan, bukan jatuh. Sebelum Unity 6, properti ini bernama velocity. Tutorial lama masih menulis rb.velocity: di Unity 6, kode ini tetap bisa dikompilasi, dengan peringatan bahwa velocity sudah usang dan namanya diubah menjadi linearVelocity. drag juga diubah menjadi linearDamping dengan cara yang sama. Gunakan nama yang baru.

challenge icon

Tantangan

Mudah

Gerakkan robot dengan tepat speed m/s, lalu biarkan robot jatuh dari tepi.

  1. Di FixedUpdate(), baca float h = Input.GetAxisRaw("Horizontal"); dan nilai float v dari "Vertical".
  2. Tetapkan rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed);, sambil mempertahankan gravitasi pada sumbu y.

Tekan tombol “Main” dan berjalanlah sampai melewati tepi: robot berhenti saat kamu melepaskan tombol, lalu jatuh. Setelah itu, tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Gerakkan robot dengan tombol panah tepat pada kecepatan speed, sambil mempertahankan nilai y akibat gravitasi
    }
}

Semua pelajaran di Fisika dan Gameplay

Latihan sendiri: Playground Unity