|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
24.07.2012, 01:05
|
#16
|
scientist.alien
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.07.2012, 01:33
|
#17
|
Оператор ЭВМ
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
|
Ответ: следование объекта за мышью
Taugeshtu, спасибо, ели понял
Операция " << 11" - это битовый сдвиг на 11 знаков. Если не знаешь двоичную систему счисления - не грузись.
|
Двоичную систему счисления я знаю (00, 01, 10, 11, ...). Или это не всё?
"<< 11" - нужно применять всегда? Нельзя просто написать "_laer_masl = 11"?
|
(Offline)
|
|
24.07.2012, 01:49
|
#18
|
scientist.alien
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.07.2012, 02:07
|
#19
|
Оператор ЭВМ
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
|
Ответ: следование объекта за мышью
А как заставить объект игнорировать только один коллайдер?
В моём случае камера выпускает луч, источником которого является указатель (мышка). Луч попадает в стену. В ту точку, куда попал луч, перемещается объект (Колба). Но так как колба имеет коллайдер, и стена тоже, колба бьётся об стену некоторое время и улетает далеко далеко.
Как заставить колбу игнорировать столкновения только со стеной?
|
(Offline)
|
|
24.07.2012, 02:09
|
#20
|
scientist.alien
Регистрация: 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
|
Оператор ЭВМ
Регистрация: 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
|
Оператор ЭВМ
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
|
Ответ: следование объекта за мышью
Какой функцией можно возвратить текущую позицию?
И как сместить центр объекта в Unity?
|
(Offline)
|
|
24.07.2012, 19:00
|
#23
|
scientist.alien
Регистрация: 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
|
Оператор ЭВМ
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
|
Ответ: следование объекта за мышью
я сделал так gameObject.transform.position = _hit.point, теперь трансформ позишен не является текущим положением.
а с проблемой я уже разобрался
|
(Offline)
|
|
25.07.2012, 14:16
|
#25
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: следование объекта за мышью
Делаешь поле
Vector3 originalPosition;
и перед строчкой gameObject.transform.position = _hit.point
пишешь originalPosition = gameObject.transform.position;
потом до следующего каста делаешь с originalPosition что тебе нужно.
|
(Offline)
|
|
07.08.2012, 19:17
|
#26
|
Оператор ЭВМ
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: следование объекта за мышью
Сколько таких объектов на сцене? Может быть другой в лог пишет что нельзя его взять?
|
(Offline)
|
|
07.08.2012, 19:42
|
#28
|
Оператор ЭВМ
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
|
Ответ: следование объекта за мышью
Объект в сцене один.
|
(Offline)
|
|
07.08.2012, 19:47
|
#29
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: следование объекта за мышью
Я бы посмотрел на реальные координаты этих двух объектов, между которыми замеряется расстояние. Не иначе дело не чистое))
|
(Offline)
|
|
07.08.2012, 19:53
|
#30
|
Оператор ЭВМ
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
|
Ответ: следование объекта за мышью
изначально персонаж стоит около куба.
Написало "можно". когда отошёл, написало "нельзя", когда подошёл, надпись не изменилась
если передвинуть куб, то получается наоборот:
Написало "нельзя".когда подошёл, написало "можно", когда отходишь, надпись не меняется.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:31.
|