реализовать прицел

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

реализовать прицел

Сообщение allash 09 авг 2012, 12:44

Привет всем! Скажите пожалуйста, как можно реализовать цель которая двигается в сторону дула танка, как в world of tanks?
allash
UNец
 
Сообщения: 46
Зарегистрирован: 15 ноя 2011, 22:38

Re: реализовать прицел

Сообщение Multirezonator 09 авг 2012, 13:07

Делаешь Raycast из дула, смотришь куда попал, переводишь мировые координаты в экранные, отображаешь прицел на экране.
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: реализовать прицел

Сообщение allash 09 авг 2012, 13:56

Multirezonator писал(а):Делаешь Raycast из дула, смотришь куда попал, переводишь мировые координаты в экранные, отображаешь прицел на экране.


сделал, но всё равно работает неправильно

Синтаксис:
Используется csharp
        if(Physics.Raycast(firePoint.position, firePoint.TransformDirection(Vector3.left), out hit))
        {
                Debug.DrawLine(firePoint.position,hit.point,Color.red);
               
// Получаем Vector3 hit-а d в который попали
                pointCursor = Camera.main.WorldToScreenPoint(hit.point);
       
       }

        void OnGUI()
        {
                Vector2 vector2 = GUIUtility.ScreenToGUIPoint(new Vector2(pointCursor.x, pointCursor.y));
                Rect labelRect = new Rect();
                labelRect.x = vector2.x;               
                labelRect.y = vector2.y;
                labelRect.width = cursorTexture.width;
                labelRect.height = cursorTexture.height;

                GUI.DrawTexture(labelRect,cursorTexture);
        }


 


Что не так?
allash
UNец
 
Сообщения: 46
Зарегистрирован: 15 ноя 2011, 22:38

Re: реализовать прицел

Сообщение Multirezonator 09 авг 2012, 21:09

Я попробовал, нормально получается..
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Cannon : MonoBehaviour {
        public float rotSpeed;
       
        Vector3 pointCursor;
       
        void Start () {
       
        }
       
       
        void Update () {
                transform.rotation = Quaternion.Slerp(transform.rotation, Camera.main.transform.rotation, Time.deltaTime*rotSpeed);
                RaycastHit hit;
                if(Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit))
                {
                Debug.DrawLine(transform.position, hit.point,Color.red);
               
                                                // Получаем Vector3 hit-а d в который попали
                pointCursor = Camera.main.WorldToScreenPoint(hit.point);
       
                }
               
        }
       

        void OnGUI()
        {
                Rect labelRect = new Rect();
                labelRect.x = pointCursor.x-32;              
                labelRect.y = Screen.height-pointCursor.y-32;
                labelRect.width = 64;
                labelRect.height = 64;
               
                GUI.Box(labelRect, "");
        }
}
 
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: реализовать прицел

Сообщение allash 10 авг 2012, 10:31

Всем спасибо! вроде работает, только вверх-вниз как-то не так, я думаю разберусь
allash
UNец
 
Сообщения: 46
Зарегистрирован: 15 ноя 2011, 22:38

Re: реализовать прицел

Сообщение pod4444 10 авг 2012, 11:10

Синтаксис:
Используется csharp
if(Physics.Raycast(transform.position, transform.forward, out hit))

можно сократить
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт


Вернуться в Почемучка

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

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