Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 10.09.2010, 23:37   #286
Illidan
Разработчик
 
Регистрация: 06.08.2007
Сообщений: 473
Написано 131 полезных сообщений
(для 257 пользователей)
Ответ: Визуальный редактор логики для Unity

расскажите пожалуйста об антаресе подробней. желательно отдельной темой. Кто, когда, для чего, как, зачем?
(Offline)
 
Ответить с цитированием
Старый 10.09.2010, 23:40   #287
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Визуальный редактор логики для Unity

Сообщение от Illidan Посмотреть сообщение
расскажите пожалуйста об антаресе подробней. желательно отдельной темой. Кто, когда, для чего, как, зачем?
документация на русском

Страница скачивания
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Illidan (11.09.2010)
Старый 25.09.2010, 23:53   #288
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

там его точно нет Да и кто его будет переозвучивать...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 26.09.2010, 00:34   #289
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Сообщение от Andvrok Посмотреть сообщение
Ну не создавать же тему ради одного вопроса о мануале?
А кто говорил о создании тамы ?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 04:38   #290
Illidan
Разработчик
 
Регистрация: 06.08.2007
Сообщений: 473
Написано 131 полезных сообщений
(для 257 пользователей)
Ответ: Фак по Юнити.

как перевести 3д координаты в двумерные?
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 08:42   #291
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Если я правильно понял, то нужно спроецировать точку на экран? Тогда вот эти функции камеры помогут:
Camera.WorldToScreenPoint
Camera.WorldToViewportPoint
Camera.ScreenToViewportPoint
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 24.10.2010 в 09:51.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Illidan (24.10.2010)
Старый 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)
 
Ответить с цитированием
Старый 03.11.2010, 19:05   #293
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Должно решиться просто. Смотрим пост выше и применяем первую функцию. Заменяем:
if (Input.GetMouseButtonDown(0) && _GUILayer.HitTest(Input.mousePosition) == null)  { 
на
if (Input.GetMouseButtonDown(0) && _GUILayer.HitTest(Camera.main.WorldToScreenPoint (Input.mousePosition)) == null)  { 
UPD:
Хотя только сейчас понял что не прав... наверное из-за того что голова болит... возможно стоит инвертировать ось Y у мыши. Т.е.:
Vector2 mp Input.mousePosition;
mp.Screen.height mp.y;
if (
Input.GetMouseButtonDown(0) && _GUILayer.HitTest(mp) == null)  { 
Сам бы я пошел другим путем, я бы проверил попадает ли mp в Rect области GUI, т.е. (new Rect(100, 100, 200, 200)).Contains(mp);.
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 03.11.2010 в 20:46.
(Offline)
 
Ответить с цитированием
Старый 03.11.2010, 21:44   #294
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Фак по Юнити.

Я знаю координаты объекта. Как мне получить доступ к самому объекту?
(Offline)
 
Ответить с цитированием
Старый 03.11.2010, 22:31   #295
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Как-то с другого конца...
Можно найти все трансформы в сцене и сравнить их координаты с имеющимися.
Но проще дать объекту имя или тэг по которому можно будет его найти или ограничить поиск.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 03.11.2010, 23:50   #296
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Фак по Юнити.

Сообщение от pax Посмотреть сообщение
Как-то с другого конца...
Можно найти все трансформы в сцене и сравнить их координаты с имеющимися.
Но проще дать объекту имя или тэг по которому можно будет его найти или ограничить поиск.
Примерно так я думал, спасибо. Ещё, я не нашёл, как перебирать все трансформы в сцене.
(Offline)
 
Ответить с цитированием
Старый 04.11.2010, 03:34   #297
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Вот так можно:
Transform[] transforms = (Transform[]) FindObjectsOfType(typeof (Transform));
        foreach (
Transform sceneTransform in transforms)
        {
            if (
sceneTransform.position == myPos)
            {
                
//объект найден


                
break;
            }
        } 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
baton4ik (04.11.2010)
Старый 04.11.2010, 10:14   #298
Stanis1av
AnyKey`щик
 
Аватар для Stanis1av
 
Регистрация: 23.10.2010
Адрес: UKRAINE,Crimea,Simferopol
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Фак по Юнити.

Хотя только сейчас понял что не прав... наверное из-за того что голова болит... возможно стоит инвертировать ось Y у мыши. Т.е.:
Vector2 mp Input.mousePosition;
mp.Screen.height mp.y;
if (
Input.GetMouseButtonDown(0) && _GUILayer.HitTest(mp) == null)  { 
Сам бы я пошел другим путем, я бы проверил попадает ли mp в Rect области GUI, т.е. (new Rect(100, 100, 200, 200)).Contains(mp);.
Y - мыши я переворачивал, забыл написать, ничего не происходило, хотя именно так конечно правильно, но и так GUI не видит .

А перебирать все GUI на пересечение по Rect не очень удобно, это у меня в примере тестовый GUI, а ведь их может быть много на экране и еще динамические, хотелось бы победить эту штуку, второй день бъюсь

Ну а если с Rect, то как найти все GUI?
(Offline)
 
Ответить с цитированием
Старый 04.11.2010, 11:27   #299
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Сообщение от Stanis1av Посмотреть сообщение
Ну а если с Rect, то как найти все GUI?
Достаточно зарегистрировать в каком-то компоненте все области, в которых находятся элементы GUI.

Можно попробовать так:
public class MouseOnGUITester:MonoBehaviour
{
    public static 
readonly Dictionary<string,RectGUIRects = new Dictionary<string,Rect>();
    public static 
bool mouseOnGUI false;

    public 
void Update()
    {
       
Vector2 mp Input.mousePosition
       
mp.Screen.height mp.y
       
mouseOnGUI false;
       foreach (var 
rect in GUIRects)
       {
           if(
rect.Value.Contains(mp))
           {
               
mouseOnGUI true;
               break;
           }
       }
    }

    public static 
void RegisterRect(string rectNameRect rect)
    {
        
GUIRects[rectName] = rect;
    }

    public static 
void UnRegisterRect(string rectName)
    {
        if(
GUIRects.ContainsKey(rectName)  GUIRects.Remove(rectName);
    }
    

Бросить этот компонент на любой объект в сцене и регистрировать по имени все области, в которых GUI есть. Если область исчезает - разрегистрировать ее (например в OnDisable компонента с GUI). Если Область изменила размер или положение, то ее можно зарегистрировать заново.

Пользоваться:
// регистрация
public void Start()
{
   
MouseOnGUITester.RegisterRect("MyMenuRect", new Rect(100100200200));
}

// разрегистрация
public void OnDisable()
{
    
MouseOnGUITester.UnRegisterRect("MyMenuRect");
}


// проверка
public void Update()
{
  if (!
MouseOnGUITester.mouseOnGUI )
  {
     
// действие
  
}

PS: писал сразу сюда, возможно ошибок налепил...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.11.2010, 10:22   #300
Stanis1av
AnyKey`щик
 
Аватар для Stanis1av
 
Регистрация: 23.10.2010
Адрес: UKRAINE,Crimea,Simferopol
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Фак по Юнити.

идея понятна, но всё же - это как-то "сложно" должно быть какое-то стандартное решение.

Спасибо paxу
за подержку

Ведь эта тема толком нигде не описана

Единственное, что я нашел - это существует какая-то несовместимось GUI в Unity, это - старый стиль графического интерфейса (из классов GUIElement, GUITexture, GUIText, GUILayer) и новый (именуемые " UnityGUI "и из всех других классов GUIAnything, и OnGUI () вызова). Так что если вы используете UnityGUI, HitTest ничего не найдете.

pax если что-то знаете , расскажите плз
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:14.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com