Уже долго ищу исходник чтобы персонаж садился в машину (без анимации) примерно как в гта и ездил на ней. Не кидайте вот этот тутор http://unity3d-16mb.narod.ru/vehicles он багованный. Пожалуйста помогите.
Без анимации? А это как? Кто будет кости персонажа двигать? Или Вы хотите, чтобы как нажал кнопку "сесть в машину", так тут же игрок пропал, а машина поехала? Выражайтесь точнее, пожалуйста.
1.Подходим к машине 2.Жмем кнопку действия 3.Персонаж садится в машину(без анимации. Персонаж исчезает и управление переходит на машину) 4.Едим в машине куда нам надо 5.Жмем кнопку действия, персонаж выходит из машины (персонаж появляется возле машины) 6.Идём пешком дальше
Если умеешь скрипты писать, то тебе в помощь эти функции:
Код
gameObject.GetComponent("название Скрипта").enabled = true; //включение скрипта на каком-либо объекте. true заменить на false - получится отключение. gameObject.active = false; \\ полное отключение объекта со всеми его скриптами и мешами.
Добавлено Скрипт машины в обще с нуля написать не трудно,если ты ,конечно, правильно выразился ) В обще тебе нужен скрипт входа и выхода из машины,или скрипт машины,или то и другое,ты ,плз,по понятней выражай что тебе нужно)
Сообщение отредактировал Altair - Пн, 24 Фев 2014, 00:14
#pragma strict //----------------------------- // // Enter car. // 1) Назначить тэг на машину ------> Car // 2) Повесить этот скрипт на персонажа. // 3) Указать свои скрипты которые нужно включить/выключить. // //-----------------------------
private var _PC:PlayerCar; //скрипт машины var _SMF:SmoothFollow; //камера var Thd : ThirdPersonController; // контроллер игрока var DoEnterCar=false; // переменная что мы вошли в машину //public var vec_3_avto : Vector3; var Car:Transform;
function Start () { //получаем скрипт контроллера игрока Thd = this.transform.GetComponent(ThirdPersonController); }
function Update () {
if(Input.GetKeyDown(KeyCode.E)){ if(DoEnterCar==false){ //создаем вектор , направление которого равно направлению от персонажа вперед var fwd = transform.TransformDirection (Vector3.forward); //конечная точка луча var hit : RaycastHit; //пускаем луч и проверяем if (Physics.Raycast (transform.position, fwd, hit, 3.0) && hit.transform.tag == "Car") { //проверка тегов объекта, что стоит напротив нас на расстоянии 3 юнита Debug.Log("TAG : "+hit.transform.tag ); //находим скрипт управления авто _PC = hit.transform.gameObject.GetComponent(PlayerCar); //включаем, либо выключаем то, что нам нужно //--------------------------------- _PC.enabled=true; //включили скрипт управления авто _SMF.target = hit.transform; //сменили цель камеры Thd.enabled=false;// выключили контроллер игроком Car=hit.transform;//mesh render не смог найти, или подключить, // так что я игрока просто выкинул вниз, за карту this.transform.position-=this.transform.up*10; DoEnterCar=true;// включим переменную, что мы сели в авто
//---------------------------------
} }else if(DoEnterCar){ //--------------------------------- //тут все на оборот _PC.enabled=false; _SMF.target = this.transform; Thd.enabled=true; DoEnterCar=false; //--------------------------------- //ставим координаты игрока, рядом с машиной this.gameObject.transform.position = Car.transform.position; this.transform.position+= this.transform.up*3; this.transform.position-= this.transform.forward*5;