Unity 3D obje yanlış spawn oluyor

Furkannnn

Megapat
Katılım
8 Mayıs 2015
Mesajlar
73
Daha fazla  
Cinsiyet
Erkek
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.


Videoda görüldüğü gibi zeminin üstünde spawnlıyor. ChatGPT ile konuştum ama o da yapamadı, kodu yazan da o zaten ama düzeltmeyi bir türlü yapamadım. Anlayan biri yazabilir mi?

Kod:

Kod:
using UnityEngine;

public class BlockPlacer : MonoBehaviour
{
    public GameObject blockPrefab;   // Buraya Block prefab'ını sürükle
    public float gridSize = 1f;      // Küp boyutun 1 ise böyle kalsın
    public float maxDistance = 100f; // Rayin maksimum mesafesi

    void Update()
    {
        
        
        
        // Sol tık ile blok yerleştir
        if (Input.GetMouseButtonDown(0))
        {
            PlaceBlock();
        }

        // Sağ tık ile blok kır (opsiyonel)
        if (Input.GetMouseButtonDown(1))
        {
            RemoveBlock();
        }
    }

    void PlaceBlock()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, maxDistance))
        {
            // Prefab'ın renderer'ından gerçek boyutu al
            float blockSize = blockPrefab.GetComponent<MeshRenderer>().bounds.size.y;

            Vector3 point = hit.point + hit.normal * (blockSize / 2f + 0.1f);

            Vector3 snapped = new Vector3(
                Mathf.Round(point.x / blockSize) * blockSize,
                Mathf.Round(point.y / blockSize) * blockSize,
                Mathf.Round(point.z / blockSize) * blockSize
            );

            Instantiate(blockPrefab, snapped, Quaternion.identity);
        }
    }


    void RemoveBlock()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, maxDistance))
        {
            // Eğer vurduğumuz şey bir bloksa silelim
            // Tag ile filtrelemek istersen: hit.collider.CompareTag("Block") diye kontrol ekleyebilirsin
            Destroy(hit.collider.gameObject);
        }
    }
}
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı