本文へスキップ
Unity Tutorial

Memindahkan objek 3D ke posisi yang diklik di Unity

Gunakan ScreenPointToRay, Physics.Raycast, dan MoveTowards untuk membuat controller click-to-move yang mudah dipahami.

公開日: 2026-05-05#Unity#Raycast#3D#Movement
+
*
+
Coco, karakter pemandu・喜ぶ
Coco
Pemandu belajar game dev
Pelajaran ini memakai struktur layar terpandu yang sama seperti versi Jepang: pembuka visual, dialog karakter, langkah, dan penutup praktis.
+
*
+
Hajime, karakter pelajar・混乱
Hajime
Pemula yang belajar game engine
Aku ingin tahu apa yang harus dibuat lebih dulu, apa yang perlu dicek, dan bagaimana memastikan aku benar-benar paham.
Coco, karakter pemandu
Tutorial ini membahas pola yang sangat berguna: membaca klik di lantai lalu menggerakkan karakter ke titik itu dengan cara yang jelas dan terkontrol.
Hajime, karakter pelajar
Periksa tujuan, input, dan tanda keberhasilan
Coco, karakter pemandu
Pelajaran lebih mudah diikuti ketika kamu tahu apa yang harus terlihat di layar dan apa yang dianggap selesai.

Ringkasan pelajaran

Selesaikan dulu satu hasil yang benar-benar bekerja

1.

Tujuan

Tutorial ini membahas pola yang sangat berguna: membaca klik di lantai lalu menggerakkan karakter ke titik itu dengan cara yang jelas dan terkontrol.

2.

Waktu

30-40 min / Pemula

3.

Hasil

Klik di lantai menentukan tujuan berikutnya.

Sebelum mulai

Periksa tujuan, input, dan tanda keberhasilan

Pelajaran lebih mudah diikuti ketika kamu tahu apa yang harus terlihat di layar dan apa yang dianggap selesai.

1

Tutorial ini membahas pola yang sangat berguna: membaca klik di lantai lalu menggerakkan karakter ke titik itu dengan cara yang jelas dan terkontrol.

2

Ubah posisi klik layar menjadi ray 3D dengan Camera.main.ScreenPointToRay lalu deteksi lantai dengan Physics.Raycast.

3

Klik di lantai menentukan tujuan berikutnya.

1Langkah demi langkah

1
Step 1
Lempar ray dari posisi mouse
Ubah posisi klik layar menjadi ray 3D dengan Camera.main.ScreenPointToRay lalu deteksi lantai dengan Physics.Raycast.
2
Step 2
Simpan titik hit sebagai target
Saat ray mengenai ground, simpan hit.point sebagai tujuan objek.
3
Step 3
Gerakkan dan putar dengan halus
Gunakan Vector3.MoveTowards untuk posisi dan rotasi halus bila diperlukan.

2Kode

Click-to-move controller
csharp
using UnityEngine;

public class ClickMoveController : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 5f;
    [SerializeField] private LayerMask groundLayer;

    private Vector3 targetPosition;
    private bool hasTarget;

    private void Start()
    {
        targetPosition = transform.position;
    }

    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out RaycastHit hit, 100f, groundLayer))
            {
                targetPosition = hit.point;
                hasTarget = true;
            }
        }

        if (!hasTarget) return;

        transform.position = Vector3.MoveTowards(
            transform.position,
            new Vector3(targetPosition.x, transform.position.y, targetPosition.z),
            moveSpeed * Time.deltaTime
        );
    }
}

3Checklist

  • Klik di lantai menentukan tujuan berikutnya.
  • Objek hanya bereaksi ke layer ground yang dipilih.
  • Kecepatan gerak tetap stabil karena memakai Time.deltaTime.

4Ulasan karakter

Hajime, karakter pelajar
Klik di lantai menentukan tujuan berikutnya.
Coco, karakter pemandu
selesaikan dulu tutorial persis seperti petunjuknya, lalu ubah satu nilai atau detail UI agar pemahamannya lebih menempel.
Variasi kecil: selesaikan dulu tutorial persis seperti petunjuknya, lalu ubah satu nilai atau detail UI agar pemahamannya lebih menempel.

Tutorial berikutnya