Показать сообщение отдельно
Старый 03.11.2010, 17:22   #292
Stanis1av
AnyKey`щик
 
Аватар для Stanis1av
 
Регистрация: 23.10.2010
Адрес: UKRAINE,Crimea,Simferopol
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Фак по Юнити.

Всем привет)
У меня вопрос!

о GUILayer.HitTest

я для камеры игрока сделал такой скрипт - камера над игроком и не поворачивается и привязал кней управление:
кликаю мышью в пустое место на плане - ставлю объект (маркер),
кликаю на врага - атакую.

проблема в том, что когда кликаю на GUI ставиться и маркер , я попробовал сделать это с помощью GUILayer.HitTest, но ничего не получилось

вот скрипт , помогите решить такую задачу

using UnityEngine;
using System.Collections;

public class PlayerCamera: MonoBehaviour {

// положение камеры относительно Player
public float XCamera = -20;
public float YCamera = 30;
public float ZCamera = -20;
	
private Transform _thisTransform;
private Transform _playerTransform;
private Transform _MarkerTransform;
private GameObject _Marker;
private GameObject _player;
	
// Use this for initialization
void Start () {
	
// Получаем компонент трансформации объекта, к которому привязан данный компонент
_thisTransform = transform;

// Получаем компонент трансформации игрока  и маркера
_player = GameObject.Find("Player");
_playerTransform = _player.transform;
		
_Marker = GameObject.Find("Marker");
_MarkerTransform = _Marker.transform;
		
}
	
public void OnGUI() {

// тестовая GUI область
GUILayout.BeginArea(new Rect(100, 100, 200, 200), GUI.skin.box);
GUILayout.Button("TEST");
GUILayout.EndArea();
}

	
// Update is called once per frame
void Update () {
		
GUILayer  _GUILayer  = Camera.main.GetComponent<GUILayer>();
		
if (Input.GetMouseButtonDown(0) && _GUILayer.HitTest(Input.mousePosition) == null)  {
			
Ray _ray = camera.ScreenPointToRay (Input.mousePosition);
	 
RaycastHit hit;

if (Physics.Raycast (_ray, out hit)) {
				
// атакуем Enemy	
if (hit.collider.gameObject.tag == "Enemy") {
					
if (Vector3.Distance(_playerTransform.position, рit.collider.gameObject.transform.position) < 3.0f) {
						
hit.collider.gameObject.GetComponent<Enemy>().HealthInc();
						
 }
} 
				
// ставем маркер на поле
if (hit.collider.gameObject.tag == "Plane") {
					
_MarkerTransform.position = new Vector3(hit.point.x, 1, hit.point.z);
_Marker.active = true;
  }
 }
		
}
		
_thisTransform.position = new Vector3( _playerTransform.position.x+XCamera, YCamera, _playerTransform.position.z+ZCamera);

 }
}
(Offline)
 
Ответить с цитированием