Oyun Kütüphanesi

Rigidbody ile Nesne Çekme/Bırakma (Pickup)

Fizik & Zıplama Unity C# 2
RigidbodyileNesneÇekme/BırakmaPickup .cs
C#
using UnityEngine;
public class PickupSystem : MonoBehaviour
{
    public float pickupRange = 3f;
    public Transform holdPoint;
    public Camera cam;

    private GameObject held;
    private Rigidbody heldRb;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (held == null) TryPickup();
            else Drop();
        }
        if (held != null)
            held.transform.position = holdPoint.position;
    }

    void TryPickup()
    {
        Ray ray = cam.ScreenPointToRay(new Vector3(Screen.width/2, Screen.height/2));
        if (Physics.Raycast(ray, out RaycastHit hit, pickupRange))
        {
            if (hit.rigidbody != null)
            {
                held = hit.collider.gameObject;
                heldRb = hit.rigidbody;
                heldRb.isKinematic = true;
            }
        }
    }

    void Drop()
    {
        heldRb.isKinematic = false;
        held = null;
    }
}

Açıklama

Oyuncu yaklaştığında E ile nesneyi eline alır, tekrar E'ye basınca bırakır.

Etiketler

Rigidbody Taşıma Pickup Grab Kinematic

Nasıl Kullanılır?

1. Player kamerasına bu scripti ekle.

2. 'Hold Point' için Player'ın önünde bir boş Transform oluştur.

3. Taşınacak nesneler Rigidbody içermeli.

4. E tuşu ile kameraya bakan nesneyi al/bırak.

Unity 2022+ ve Unity 6 ile uyumludur.

MonoBehaviour tabanlı scriptleri Assets klasörüne .cs olarak kaydedin.