Я борюсь с проблемой, пока не могу найти решение, может быть, вы мне поможете! Итак, у меня есть конвейер и случайные игровые объекты, которые появляются на нем, и конвейер транспортирует объекты до конца. На конвейере у меня есть сортировочная палитра, которую я хочу вращать на определенные углы в зависимости от того, какой игровой объект порожден, но я хочу, чтобы они вращались только тогда, когда игровой объект находится близко к поддону, вид работающего датчика, например, на поддоне есть датчик и когда объект находится на определенном расстоянии, поддон знает угол, на который он должен повернуться. Объекты движутся на конвейере по оси X. Я хочу знать, как проверить, когда игровой объект достиг точки, код, который я использую ниже, не работает. Спасибо за вашу помощь!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//i have a conveyor with 2 bands next to eachother moving on opposite directions
public class Stackoverflow : MonoBehaviour
{
public Slider x;
public InputField inputspawn;
public InputField inputtime;
public Slider z;
public GameObject[] prefabs;
Vector3 V = new Vector3();
public GameObject coordX1, coordX2, coordZ1, coordZ2;
int spawnvalue;
float timevalue;
bool value = false;
public Slider paleta1;//slider that rotates 1st pallet
public Slider paleta2;//slider that rotates 2nd pallet
public GameObject verificationpoint;//when this point is reached by GO, the pallet should rotate
float[] unghiuri = { 164.6144f, 205.6429f, 87.5875f, 164.6144f };//angles for 1st pallet
float[] ung = { 154.3571f, 90f, 90f, 90f};// angles for 2nd pallet
public int T;
public GameObject paleta1go, paleta2go;// pallet 1 and 2
public float delta;
public float dist;
void Start()
{
Vector3 position = new Vector3(UnityEngine.Random.Range( coordX1.transform.position.x, coordX2.transform.position.x), 3f, UnityEngine.Random.Range(coordZ1.transform.position.z, coordZ2.transform.position.z));
T = UnityEngine.Random.Range(0, prefabs.Length);
Instantiate(prefabs[T], position, Quaternion.identity);
paleta1.value = unghiuri[T];
paleta2.value = ung[T];
StartCoroutine(Spawn());
}
void Update()
{
if (value == true)
{
Vector3 position = new Vector3(UnityEngine.Random.Range(coordX1.transform.position.x, coordX2.transform.position.x), 3f, UnityEngine.Random.Range(coordZ1.transform.position.z, coordZ2.transform.position.z));
V = position;
spawnvalue = int.Parse(inputspawn.text);
timevalue = float.Parse(inputtime.text);
dist = Vector3.Distance(paleta1go.transform.position, prefabs[T].transform.position);
if (prefabs[T].transform.position.x == verificationpoint.transform.position.x)//that's how i verify if the GO reaches verification point
{
paleta1.value = unghiuri[T];
paleta2.value = ung[T];
}
}
}
IEnumerator Spawn()
{
while (true)
{
if(value)
for(int i = 0; i < spawnvalue; ++i)
{
Vector3 position = new Vector3(UnityEngine.Random.Range(coordX1.transform.position.x, coordX2.transform.position.x), 3f, UnityEngine.Random.Range(coordZ1.transform.position.z, coordZ2.transform.position.z));
V = position;
T = UnityEngine.Random.Range(0, prefabs.Length);
Instantiate(prefabs[T], V, Quaternion.identity);
}
yield return new WaitForSeconds(timevalue);
}
}
public void ToggleState(bool t)
{
value = !value;
}
}