Фиксация прицела на цели

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

Фиксация прицела на цели

Сообщение nazgul30 17 янв 2011, 14:07

Здравствуйте!
Такая проблема: Необходимо отобразить на экране текстуру прицела, которая будет следить за определенным объектом (как бы целимся в объект).
В сцене 2 объекта: First Person controller и цель - напимер сфера.
Написал скрипт:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class TracingTargetsTest : MonoBehaviour {
    //цель, на которую прицеливаемся
    public Transform targ;
    //текстура прицела
    public Texture2D crosshairTexture;
    //прямоугольник для задания координат цели
    private Rect rectCrosshair;
    //позиция цели на экране
    private Vector3 screentargPos;
   
    // Update is called once per frame
    void Update () {
        //определяем экранное положение цели
        screentargPos = Camera.main.WorldToScreenPoint(targ.position);
    }
   
    void OnGUI(){
        findCrossHairCoor();
        //рисуем текстуру
        GUI.DrawTexture(rectCrosshair, crosshairTexture);
    }
    //задаем положение текстуры
    private void findCrossHairCoor(){
        float leftRect   = screentargPos.x-crosshairTexture.width / 2f;
        float topRect    = screentargPos.y-crosshairTexture.height / 2f;
        float widthRect  = crosshairTexture.width;
        float heightRect = crosshairTexture.height;
        rectCrosshair = new Rect(leftRect,topRect,widthRect,heightRect);
    }
}  
 


Скрипт вешается на стандартный First Person controller.
Проблема в том, что при движении First Person controller прицел (структура) передвигается вверх или вниз (изменяется координата y текстуры прицела), но координата x постоянна. Т.е. прицел то выше цели, то ниже.
Почему координата y изменяется? Вроде должна постоянной быть, Цель ведь не движется.
nazgul30
UNIт
 
Сообщения: 76
Зарегистрирован: 08 сен 2010, 18:10

Re: Фиксация прицела на цели

Сообщение nazgul30 18 янв 2011, 08:22

Проблему решил сам:
Синтаксис:
Используется csharp
float topRect    =Screen.height -  screentargPos.y-crosshairTexture.height / 2f;
 
nazgul30
UNIт
 
Сообщения: 76
Зарегистрирован: 08 сен 2010, 18:10


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

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

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