Использую Wheel Collider и простейший скрипт, но есть одна проблема: если автомобиль стоит на колесах он едет, а если предположить что автомобиль плоский и если он перевернется, он не поедет. Помогите решить. Хотелось бы чтобы можно было ехать и с перевернутой машиной. Как я понимаю, скрипт работает только для нижней половины окружности Wheel Collider-а.
Ссылка на используемый скрипт:
http://habrahabr.ru/post/115557/
Есть ли какая нибудь альтернатива? С нетерпением жду ответа и помощи! =) Извините, с Unity3d знаком половину недели и программирую не очень.
у колеса есть RaycastHit который определяет когда машина на земле, тебе надо колесо перевернуть вместе с машиной. Когда машина наклониться больше 180 гр переворачивай колеса. Есть 2 вариант, сделай дубликат колес в перевернутом виде.
Сообщение отредактировал Hunjeth - Вс, 18 Май 2014, 18:30
Тебе надо перевернуть "WheelCollider" на 180гр при условии что скорость машины и вес будет меньше гравитации (-9.81). вот так как на рисунке..
Спасибо Hunjeth, я не дождался ответа, начал переделывать всю машину с нуля... Я дублировал Wheel Colliders с новым perfab, а затем перевернул их. Как я понимаю, мне придется повесить на GO Car два скрипта, один тот который приведен в примере, второй для верхней (отраженной) стороны. Необходимо изменить в таком случае скрипт, чувствую иначе будет проблема с центром масс. Вероятно это стоит сделать через триггер под машиной. Если активирован, то скрипт для нижней части включен, иначе для верней. Но я не умею пользоваться тригеррами еще, помоги с этим пожалуйста.
Вообщем, собрал машинку, сделал два скрипта, один отвечает за обычную езду, другой за езду вверх ногами. Нужно что то придумать, чтобы переключаться между скриптами. Помогите пожалуйста =3
Вот проект:
http://dropmefiles.com/EduSF
Добавлено (19 Май 2014, 05:16) --------------------------------------------- Вопрос решен)
Код
using UnityEngine; using System.Collections;
public class Trigger : MonoBehaviour { public GameObject CarUD; public GameObject camera; public GameObject cameraUp;
// Use this for initialization void Start () {}
// Update is called once per frame void Update () {}
Сори я вчера спал подчти понаписал тут, вообщем самый лучший вариант это перевернуть колеса и камеру вместе с машиной, центр массы переместить по коорд. Y через Mathf.SmoothDamp или Mathf.Lerp.
Сообщение отредактировал Hunjeth - Пн, 19 Май 2014, 19:44