Нужно сделать конвейер на юнити.. Не просто передвижение объекта, а строго по центру конвейера. Вот код, который просто передвигает объект, лежащий на данном конвейере, без позиционирования в центре.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class moveobject : MonoBehaviour
{
public GameObject Collider, Cube;
public float rotationY;
private Vector3 MoveObject = new Vector3(0, 0, 0);
public float Speed = 1f;
public float ScrollX = 0.18f;
private void Update()
{
rotationY = Cube.transform.rotation.y;//Направление обьекта
MoveObject = -transform.right;
}
private void OnTriggerStay(Collider collision)
{
if (collision.gameObject.layer == 9 || collision.gameObject.layer == 10)
{
Collider = collision.gameObject;//Движение обьекта
collision.gameObject.transform.position += MoveObject * Time.deltaTime * Speed;
}
}
private void OnTriggerExit(Collider other) {
if (other.gameObject.layer == 9 || other.gameObject.layer == 10) other.gameObject.GetComponent<Cristal>().ActiveCrs = false;
}
}
Нужно, что бы объект: При переходе на другой конвейер не ускорялся и шел строго по центру конвейера (сотки не принимаются). Вот скрины конвейера
На данный момент движение происходит так:
А нужно, что бы шел он так:
Конвейер состоит из 2 объектов: куба и плоскости. На плоскости стоит данный скрипт и скрипт анимации. (box Colider is trigger) На кубу стоит только бокс колайдер, чтобы объект никуда не проваливался. Можете помочь с реализацией данного проекта?
Есть такой вариант: при вхождении перемещаемого объекта в триггер какого либо из блоков конвейера - сперва центрируй этот объект в этом блоке конвейера
к примеру создай на каждом блоке конвейера точку в центре блока и опиши перемещение в эту точку сразу при вхождении в триггер
и после того как перемещаемый объект достигнет центра блока конвейера (к примеру ты можешь определить это установив еще один маленький триггер по центру ну или любым другим способом) далее останавливай перемещение к центру блока конвейера и запускай объект дальше по заданному блоком конвейера направлению
может быть немного костыльно, но если все грамотно описать, работать будет как часы
не могу писать в комментарии так что вот:
не знаю существует ли такая возможность,но можно разделить соседние плоскости конвейера по диагонали и тогда все объекты будут двигаться по своей "полосе", но к концу приходить будут в разное время
Задай траэкторию движения используя сплайны. Например, можно использовать Hermite Spline Controller
В таком случае не нужно будет писать код вообще.
Как вариант 2: можно сохранять направление движения в коде на некоторую задержку перед тем как брать новое направление движения. Но эт хреновый костыль.
Как вариант 3: можно отделить визуальную составляющую от "реального" конвеера. То есть смоделировать таким макаром конвеер, что бы он выглядел точно так же, но реальные конвеерные плоскости (те, которые с коллайдерами, но без MeshRenderer) были вот такими:
В таком случае скрипт в вопросе должен сработать.
Вариант 4: Альтернатива сплайнам: вручную отметить путь созданными EmptyObject-ами.
Допустим обьект попадает в точку EmptyObject1, Срабатывает триггер, по которому ищется EmptyObject со следующим номером. У этого номера берутся координаты следующей точки. Когда доходит обьект до следующей точки все по кругу - срабатывает тригер и ящик начинает двигатся к следующей точке с некоей скоростью.
Но это делать глупо если есть сплайны.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Помогите разобратьсяСделал приложение, которое авторизируется на SAP HANA Cloud cockpit
Существует IDE который поддерживает C++ и C#При этом можно компилировать
При использовании WebDriver (в частности ChromeDriver) в консольном приложении, сталкиваюсь с нежелательными побочными эффектами его работыЕсли вывод...
Допустим есть 1000 урлХочу каждый урл загрузить в браузер, получить данные