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

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

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

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 24.07.2012, 01:05   #16
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: следование объекта за мышью

Каким образом сделать коллайдеры восприимчивыми к мышке, а объект заставить игнорировать Лучи?
LayerMask
Это особое, магическое число, используемое для выбора слоёв для райкаста. Допустим, создадим новый слой, и будет он у нас иметь индекс 11 (ну так, навскидку... от 0 до 7 слои стандартные идут, встроенные)
Тогда магическое число, нужное нам, будет:
var _layer_mask = 1 << 11;
Операция " << 11" - это битовый сдвиг на 11 знаков. Если не знаешь двоичную систему счисления - не грузись.
Но сейчас в _layer_mask находится ТОЛЬКО 11 слой. Если мы, допустим, не хотим в 11 слой совать все объекты, по которым нужно пройтись райкастом, а хотим в 11 слой засунуть все объекты, по которым НЕ нужно райкастить, нам надо инвертировать маску. Делается так:
_layer_mask ~= _layer_mask;

А потом эту переменную _layer_mask применяем в райкасте. Всё.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Huruffus (24.07.2012)
Старый 24.07.2012, 01:33   #17
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

Taugeshtu, спасибо, ели понял

Операция " << 11" - это битовый сдвиг на 11 знаков. Если не знаешь двоичную систему счисления - не грузись.
Двоичную систему счисления я знаю (00, 01, 10, 11, ...). Или это не всё?
"<< 11" - нужно применять всегда? Нельзя просто написать "_laer_masl = 11"?
(Offline)
 
Ответить с цитированием
Старый 24.07.2012, 01:49   #18
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: следование объекта за мышью

Нельзя. Потому что _layer_mask = 11 даст тебе в двоичной системе:
000....01011
Т.е. такая маска будет включать слои с индексами 0, 1, и 3.
По сути, что мы делаем (если делаем правильно):
Приравниваем _layer_mask = 1.
Получаем:
000.....0001
А потом сдвигаем эту еденицу влево 11 раз, и получаем:
0000...0100000000000
Таким образом мы имеем в маске слой с индексом 11.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Huruffus (24.07.2012)
Старый 24.07.2012, 02:07   #19
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

А как заставить объект игнорировать только один коллайдер?

В моём случае камера выпускает луч, источником которого является указатель (мышка). Луч попадает в стену. В ту точку, куда попал луч, перемещается объект (Колба). Но так как колба имеет коллайдер, и стена тоже, колба бьётся об стену некоторое время и улетает далеко далеко.

Как заставить колбу игнорировать столкновения только со стеной?
(Offline)
 
Ответить с цитированием
Старый 24.07.2012, 02:09   #20
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: следование объекта за мышью

Как заставить колбу игнорировать столкновения только со стеной?
Edit -> Project settings -> Physics
Там найдёшь Layers collision matrix, ну а дальше, думаю, разберёшься. Опять слои) Слои - карашо.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Старый 24.07.2012, 02:14   #21
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

Слои - очень карашо!

добавил:
но я отыскал способ по-лучше: Physic.IgnoreCollision
http://docs.unity3d.com/Documentatio...Collision.html

добавил:
нет он не лучше, т.к. придётся прописывать это для каждого коллайдера в отдельности, а у меня их несколько в одном.
Ваш способ определённо лучше

Последний раз редактировалось Huruffus, 24.07.2012 в 03:23.
(Offline)
 
Ответить с цитированием
Старый 24.07.2012, 18:45   #22
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

Какой функцией можно возвратить текущую позицию?
И как сместить центр объекта в Unity?
(Offline)
 
Ответить с цитированием
Старый 24.07.2012, 19:00   #23
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: следование объекта за мышью

Именно возвратить? Куда?)

Вообще, текущая позиция - вот она:
gameObject.transform.position
Не ленись чуть дольше лазить по справке.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Старый 25.07.2012, 13:49   #24
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

я сделал так gameObject.transform.position = _hit.point, теперь трансформ позишен не является текущим положением.

а с проблемой я уже разобрался
(Offline)
 
Ответить с цитированием
Старый 25.07.2012, 14:16   #25
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

Делаешь поле
Vector3 originalPosition;
и перед строчкой gameObject.transform.position = _hit.point
пишешь originalPosition = gameObject.transform.position;
потом до следующего каста делаешь с originalPosition что тебе нужно.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.08.2012, 19:17   #26
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

Всем привет!

измеряю дистанцию до объекта и в зависимости от заданной дистанции пишу "можно взять", "не возможно взять".

когда я отхожу от объекта выводит "не возможно взять", а когда подхожу к объекту, то надпись не меняется. Почему, скажите пожалуйста? Объект в сцене один.

public class takeObject : MonoBehaviour {
	public GameObject takeObj;
	
	void Start () {
	takeObj = GameObject.FindWithTag("canTake");
	}
	
	// Update is called once per frame
	void Update () {
	if (Vector3.Distance(takeObj.transform.position, gameObject.transform.position)<5)
			print ("can take it");
			else print ("can't take it");	
	}
}
(Offline)
 
Ответить с цитированием
Старый 07.08.2012, 19:40   #27
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

Сколько таких объектов на сцене? Может быть другой в лог пишет что нельзя его взять?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.08.2012, 19:42   #28
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

Объект в сцене один.
(Offline)
 
Ответить с цитированием
Старый 07.08.2012, 19:47   #29
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

Я бы посмотрел на реальные координаты этих двух объектов, между которыми замеряется расстояние. Не иначе дело не чистое))
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.08.2012, 19:53   #30
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

изначально персонаж стоит около куба.
Написало "можно". когда отошёл, написало "нельзя", когда подошёл, надпись не изменилась

если передвинуть куб, то получается наоборот:
Написало "нельзя".когда подошёл, написало "можно", когда отходишь, надпись не меняется.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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