Linecast не видит character Controller [Решено]

Общие вопросы о Unity3D

Linecast не видит character Controller [Решено]

Сообщение henzosergei 28 окт 2011, 09:48

Доброго времени суток, возник вопрос опять по триггерам, но на этот раз тут основную роль играет модель персонажа, созданного и импортированного из 3ds Max(поэтому не создаю новую тему).
Собственно есть скрипт взгляда
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class EnemyVzglyad : MonoBehaviour {
        public Transform target;
       
        //opredelenie celi===========
        private bool _vzglyad;
        private int laierMask;
    //===========================
       
        void Start () {
        laierMask = 1<<8;
               
        }
       
        // Update is called once per frame
        void Update () {
       
        }
       
        void OnTriggerEnter(Collider other){
        if(((other.CompareTag("Player"))||(other.CompareTag("NPC")))&&(other.transform!=target.transform)){
                        RaycastHit plHit;
                        if(Physics.Linecast(target.position,other.transform.position,out plHit)){
                                if(plHit.collider.CompareTag("Player")){
                                        _vzglyad = true;
                                       
                                        Debug.DrawLine(target.position,plHit.transform.position,Color.yellow);
                        EnemyAI EAI = (EnemyAI)target.gameObject.GetComponent("EnemyAI");
                        EAI.GetTargetVzglyad(other,_vzglyad);
                                       
                                }
                               
                               
                        }
                //      Debug.Log(other.gameObject.name);
                       

                }
        }
       
        void OnTriggerExit(Collider other){
        if(((other.CompareTag("Player"))||(other.CompareTag("NPC")))&&(other.transform!=target.transform)){
                        _vzglyad = false;
                        EnemyAI EAI = (EnemyAI)target.gameObject.GetComponent("EnemyAI");
                        EAI.GetTargetVzglyad(other,_vzglyad);
                        //nugno dobavit' timing ostanovki cherez time
                       
                }
        }
       
                void OnTriggerStay(Collider other){
        if(((other.CompareTag("Player"))||(other.CompareTag("NPC")))&&(other.transform!=target.transform)){
                        RaycastHit plHit;
                        if(Physics.Linecast(target.position,other.transform.position,out plHit)){
                                if(plHit.collider.CompareTag("Player")){
                                        _vzglyad = true;
                                       
                                                                                       
                                float dist = Vector3.Distance(target.position,plHit.transform.position);
                                                               
                                       
                                        Debug.DrawLine(target.position,plHit.transform.position,Color.yellow);
                                        Debug.Log(dist);
                        EnemyAI EAI = (EnemyAI)target.gameObject.GetComponent("EnemyAI");
                        EAI.GetTargetVzglyad(other,_vzglyad);
                                       
                                }
                               
                               
                        }
                       

                }
        }
}
 

Все отлично работает на стандартном рабочем(3rd person controller), а на импортированной модельке - отказывается.
Поразмыслив понял в чем проблема: у стандартного рабочего центр на тазобедренной кости, а у моей модели на полу(там где сетка в максе), и поэтому при накидывании characterController его коллайдер приходится сдвигать по Y вверх. После таких настроек OnTriggetEnter(и т.п.) реагирует на чара, верно распознает его координаты и целится под ноги(лучше бы в голуву :D , но не принципиально), а вот lineCast не реагирует на чара вообще. Ставлю у characterController Y координату 0, все отлично(Чуть больше/меньше не работает), кроме: OMG ОН ПАРИТ НАД ЗЕМЛЕЙ НА РАСТОЯНИИ МЕТРА WTF!!!!!!!!!! Вопрос как в максе изменить Y координаты полностью санимированной модели? Ну или направьте в сторону правильного решения.
Последний раз редактировалось henzosergei 02 ноя 2011, 22:31, всего редактировалось 1 раз.
henzosergei
UNец
 
Сообщения: 22
Зарегистрирован: 08 сен 2011, 16:29

Re: Linecast не видит character Controller

Сообщение henzosergei 02 ноя 2011, 18:25

Ищо раз здрасьте :D Всем кто столкнулся с похожей проблемой вот решение:
выделяем biped в 3ds Max, идем на вкладку Motion->parametrs->Biped жмем кнопку Move All Mode и смещаем анимированный biped так, что бы сетка была по центру бипеда. Импортируем и радуемся.
henzosergei
UNец
 
Сообщения: 22
Зарегистрирован: 08 сен 2011, 16:29

Re: Linecast не видит character Controller

Сообщение henzosergei 02 ноя 2011, 19:12

[РЕШЕНО]
henzosergei
UNец
 
Сообщения: 22
Зарегистрирован: 08 сен 2011, 16:29


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12