Question by
I_Kalis · Nov 04, 2019 at 10:06 PM ·
c#scripting problemphysics3d
How can i look for collisions of the bulidngs in may array ? how can i use OnTRiggerEnter/exit ?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class buildingPlacement : MonoBehaviour { public GameObject[] buildings;//Gebäude zum Platzieren private Transform currentBuilding;//zum ändern der Position des Gebäudes
void Update()
{
if (currentBuilding != null)//wenn das Gebäude nicht augewählt wurde
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//sende Laser von der Kamera in den Boden wenn die maustaste gedrückt wird (die ganze Zeit)
RaycastHit hitInfo;//Eintrittstelle Vector3 als hitInfo
if (Physics.Raycast(ray, out hitInfo))//wenn der Laser eintritt
{
currentBuilding.transform.position = hitInfo.point;//setze Gebäudelocation zur eintrittstelle
currentBuilding.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal);//Object steht so vom Boden ab wie der normal absteht
}
}
if (Input.GetMouseButtonDown(0))//wenn linke maus gedrückt
{
currentBuilding = null;//currentbuilding = das einfügen von objekt b bei seiner transformposition = hitInfo (SetItem())
}
}
void OnGUI()//GUI event wird gerendert
{
for (int i = 0; i <buildings.Length; i++) //int i =0|| i < Gebäude die zum Array gehören || wenn i gelesen wird i+1
{
if (GUI.Button(new Rect(Screen.width / 20, Screen.height / 15 + Screen.height / 12 * i, 100, 30), buildings[i].name))//GUI button (position, Form, name der Gebäude)
{
SetItem(buildings[i]);//Funktion SetItems wird aufgerufen (mit den Building welches von dem Button aufgerufen wird)
}
}
}
void SetItem(GameObject b)//ausgewähltes Objekt = b || Hier muss die Collision abgefragt werden !!!!!!!!!
{
currentBuilding = ((GameObject)Instantiate(b)).transform;//currentbuilding = das einfügen von objekt b bei seiner transformposition = hitInfo
}
}
Comment
You question is still not clear. You cannot just post the code and hope people will know what you want to do