Ultima modifica da un moderatore:
Sto creando un clone di minecraft per imparare meglio c#
Non mi serve creare chunk...per ora mi accontento della mia griglia 10x10 fatta di cubi
Percui passo direttamente al sistema di placing/destroying dei blocchi con l'uso del raycast.
Distruggerli è semplice..è il piazzarli che mi sta scocciando parecchio! Il blocco da piazzare riconosce su quale faccia del cubo viene piazzato e viene creato nelle rispettive coordinate, ma non riesco ad evitare di spawnarmi cubi in faccia...come posso risolvere?
Script per distruzione e piazzamento dei blocchi attuale
Non mi serve creare chunk...per ora mi accontento della mia griglia 10x10 fatta di cubi
Percui passo direttamente al sistema di placing/destroying dei blocchi con l'uso del raycast.
Distruggerli è semplice..è il piazzarli che mi sta scocciando parecchio! Il blocco da piazzare riconosce su quale faccia del cubo viene piazzato e viene creato nelle rispettive coordinate, ma non riesco ad evitare di spawnarmi cubi in faccia...come posso risolvere?
Script per distruzione e piazzamento dei blocchi attuale
Codice:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class trc : MonoBehaviour {
public float xq;
public float yq;
public float zq;
public float time = 0.001f;
public GameObject pr;
public bool coll;
RaycastHit r;
public void destroy()
{
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out r, 5)) {
if ((r.collider.tag == "tp") || (r.collider.tag == "bt") || (r.collider.tag == "bw") || (r.collider.tag == "fw") || (r.collider.tag == "lt") || (r.collider.tag == "rt"))
{
Destroy(r.transform.parent.gameObject);
}
else
{
Destroy(r.transform.gameObject);
}
}
}
void Update() {
if (Input.GetMouseButtonDown(0))
{
destroy();
}
if (Input.GetMouseButtonDown(1))
{
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out r, 5))
{
xq = r.collider.gameObject.transform.position.x;
yq = r.collider.gameObject.transform.position.y;
zq = r.collider.gameObject.transform.position.z;
if (r.collider.isTrigger)
{
if (r.collider.tag == "tp")
{
GameObject j=Instantiate(pr, new Vector3(xq, yq + 1, zq), Quaternion.identity);
if (coll == true)
{
Destroy(j);
}
if (coll == false)
{
Destroy(j);
Instantiate(pr, new Vector3(xq, yq + 1, zq), Quaternion.identity);
}
}
if (r.collider.tag == "bt")
{
if (coll == false)
{
Instantiate(pr, new Vector3(xq, yq, zq), Quaternion.identity);
}
}
if (r.collider.tag == "bw")
{
if (coll == false)
{
Instantiate(pr, new Vector3(xq, yq, zq - 1), Quaternion.identity);
}
}
if (r.collider.tag == "fw")
{
if (coll == false)
{
Instantiate(pr, new Vector3(xq, yq, zq), Quaternion.identity);
}
}
if (r.collider.tag == "lt")
{
if (coll == false)
{
Instantiate(pr, new Vector3(xq, yq, zq), Quaternion.identity);
}
}
if (r.collider.tag == "rt")
{
if (coll == false)
{
Instantiate(pr, new Vector3(xq + 1, yq, zq), Quaternion.identity);
}
}
}
}
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == ("checks"))
{
coll = true;
}
}
private void OnTriggerExit(Collider other)
{
coll = false;
}
}