Показать сообщение отдельно
Старый 17.01.2011, 00:00   #5
Nazgul
Нуждающийся
 
Регистрация: 14.01.2011
Сообщений: 72
Написано 9 полезных сообщений
(для 44 пользователей)
Ответ: Прицеливание на объект

Cделал все по примеру, указанному Pax.
Мой скрипт полностью:
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(rectCrosshaircrosshairTexture);
    }
    
//задаем положение текстуры
    
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);
    }

targ - цель, на которую должен постоянно целится прицел.
Скрипт вешается на стандартный First Person controller.
Проблема в том, что при движении First Person controller прицел колеблется вверх-вниз (изменяется координата y текстуры прицела), но координата x постоянна. Т.е. прицел то выше цели, то ниже.
Почему координата y изменяется? Вроде должна постоянной быть, Объект targ ведь не движется.
(Offline)
 
Ответить с цитированием