[РЕШЕНО]Проблема с Instantiate

Программирование на Юнити.

Re: Проблема с Instantiate

Сообщение waruiyume 24 июл 2011, 07:46

Скрытый текст:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/23279033/plya/plya.unity3d&w=640&h=480&t=true&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class PlayerShoot : MonoBehaviour
{
        public GameObject prefabPylia; // Подгрузка префаба
        public Camera cam;                   // Переиенная для инициалезации камеры
        GameObject _targ;                    // Переменная для определения точки респауна пули
       
        Vector3 tarPos;              
                Vector3 mPos;
                Vector3 shootDir;
                float ang;
                private Quaternion plus90deg;
       
        void Start ()
        {
                        cam = Camera.main;                                           // Инициалезация камеры
                        _targ = gameObject;                       // Определение положения точки респауна пули
                        plus90deg.eulerAngles = new Vector3(0,90,0);
        }

        void Update ()
        {
                        FindVector();
        }
       
        void FindVector()
        {
                        mPos = Input.mousePosition;
                        tarPos=cam.WorldToScreenPoint(_targ.transform.position);
                        tarPos=new Vector3(tarPos.x,tarPos.y,0);
                        GameObject clone= Instantiate(prefabPylia, _targ.transform.position, plus90deg) as GameObject; // создание клона пули в игре
                        shootDir=mPos-tarPos;
                        ang=Vector3.Angle(clone.transform.forward,shootDir);
                        ang*=Mathf.Sign(Vector3.Dot(Vector3.up,shootDir));
                        clone.transform.RotateAround(_targ.transform.position,Vector3.forward,ang);
        }
}
 
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Проблема с Instantiate

Сообщение Berenold 24 июл 2011, 17:21

Простите это вид с боку или с верху? Просто ваш код в корне отличается от моего. У меня все работает, кроме разворота в нужном направлении самой пули.
Вот как у меня работает с тем кодом который я приводил раньше.
Скрытый текст:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://amateria.co.ua/WebPlayer.unity3d&w=800&h=600&t=true&preview=1' height='"+(600+30)+"' width='800' frameborder='0' scrolling='no'></iframe>"); </script>

Если можно конкретно в моем коде сказать где я ошибся.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Проблема с Instantiate

Сообщение Berenold 24 июл 2011, 20:45

waruiyume писал(а):
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class PlayerShoot : MonoBehaviour
{
        public GameObject prefabPylia; // Подгрузка префаба
        public Camera cam;                   // Переиенная для инициалезации камеры
        GameObject _targ;                    // Переменная для определения точки респауна пули
       
        Vector3 tarPos;              
                Vector3 mPos;
                Vector3 shootDir;
                float ang;
                private Quaternion plus90deg;
       
        void Start ()
        {
                        cam = Camera.main;                                           // Инициалезация камеры
                        _targ = gameObject;                       // Определение положения точки респауна пули
                        plus90deg.eulerAngles = new Vector3(0,90,0);
        }

        void Update ()
        {
                        FindVector();
        }
       
        void FindVector()
        {
                        mPos = Input.mousePosition;
                        tarPos=cam.WorldToScreenPoint(_targ.transform.position);
                        tarPos=new Vector3(tarPos.x,tarPos.y,0);
                        GameObject clone= Instantiate(prefabPylia, _targ.transform.position, plus90deg) as GameObject; // создание клона пули в игре
                        shootDir=mPos-tarPos;
                        ang=Vector3.Angle(clone.transform.forward,shootDir);
                        ang*=Mathf.Sign(Vector3.Dot(Vector3.up,shootDir));
                        clone.transform.RotateAround(_targ.transform.position,Vector3.forward,ang);
        }
}
 
 


Попробовал использовать ваш код. Пуля визуально правильное положение только при значениях:
Синтаксис:
Используется csharp
plus90deg.eulerAngles = new Vector3(0,180,90);
 


Но при таких значениях она не летит)))
Пипец просто как я запарился с этим делом))
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Проблема с Instantiate

Сообщение waruiyume 24 июл 2011, 21:12

Держите архив.
"0,180,90"-это криво импортированная модель. Сделайте реимпорт с нормальными настройками, ну или костыль из родителя пустого ГО.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Проблема с Instantiate

Сообщение Berenold 24 июл 2011, 21:55

waruiyume писал(а):"0,180,90"-это криво импортированная модель. Сделайте реимпорт с нормальными настройками, ну или костыль из родителя пустого ГО.

Все блин допер)) Да вы оказались правы. Я просто не так модель пули сделал) Это просто пипец сколько времени убито только из-за того, что модель не правильно сделана((
Все всем спасибо еще один кусочек готов)) :-bd
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Пред.

Вернуться в Скрипты

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

Сейчас этот форум просматривают: Google [Bot] и гости: 9