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