 |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
14.04.2012, 19:17
|
#286
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
Это не прицел, это визуальное представление направления выстрела. Привязан к mousePosition.
http://clip2net.com/s/1OdGX
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
15.04.2012, 19:11
|
#287
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Спасибо, разобрался. Еще один вопрос по Locomotion. Я хочу сделать что бы игрок поворачивался лицом к мыши, но незнаю как.
|
(Offline)
|
|
15.04.2012, 19:41
|
#288
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
На курсор повесить пустой GameObject. Сделать target rotation на него.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
16.04.2012, 08:19
|
#289
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Не совсем понял. А можно кусочком кода?
Онлайн смотреть
|
(Offline)
|
|
16.04.2012, 11:50
|
#290
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
В общих чертах. Повесить на обьект, который должен следить за курсором.
Transform target; RaycastHit hit;
void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray out hit)) { target.positoin=hit.point; }
Quaternion targetRotation=Quaternion.LookRotation(target.position-transform.position); transform.rotation=targetRotation; }
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
16.04.2012, 15:14
|
#291
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Все равно до меня не дошло.
|
(Offline)
|
|
16.04.2012, 15:50
|
#292
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
До меня много чего не доходит, но я как минимум корректно составляю вопросы, что именно не понятно.
Для того чтобы поворачивать обект в каком то направлении, нужно знать это направление. В нашем случае направлением служит курсор.
1.Пускаем луч из камеры в точку, где находится курсор
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
2.Получаем координаты точки на площадке(в вашем случае), соответствующие позиции курсора, если курсор находится над площадкой(луч пересекает коллайдер)
if (Physics.Raycast(ray out hit)) { target.positoin=hit.point; }
3.Поворачиваем обьект по направлению к курсору.
Quaternion targetRotation=Quaternion.LookRotation(target.position-transform.position); transform.rotation=targetRotation;
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
16.04.2012, 16:10
|
#293
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Assets/Scripts/Player/Player.cs(18,29): error CS1525: Unexpected symbol `out'
|
(Offline)
|
|
16.04.2012, 16:26
|
#294
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
if (Physics.Raycast(ray, out hit,Mathf.Infinity))
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
16.04.2012, 16:54
|
#295
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Ну тогда так уж.
public Camera cam;
void Update () {
Ray ray = cam.ScreenPointToRay (Input.mousePosition);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast (ray, out hit))
{
Vector3 rot = transform.eulerAngles;
transform.LookAt(hit.point);
transform.eulerAngles = new Vector3(rot.x, transform.eulerAngles.y+90, rot.z);
}
}
|
(Offline)
|
|
16.04.2012, 18:52
|
#296
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Вот что получилось. Смотреть Только мне не нравится резкие движения игрока когда мышка прямо на нем. Попробовал сделать через проверку на расстояние (то есть не поворачивает если дистанция < 1), но тогда получается другой баг - если провести мышью через игрока и вывести его с другой стороны то он резко повернется назад. Как Вы посоветуете сделать?
|
(Offline)
|
|
16.04.2012, 22:08
|
#297
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
Здесь ты в каждом фрейме ориентируешь обьект на таргет точку.
transform.LookAt(hit.point);
А ты в Update() просто поворачивай обьект на таргет точку с определенной скоростью.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
17.04.2012, 16:15
|
#298
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Ну хорошо. Допустим я буду делать через вот это:
transform.rotation = Quaternion.Slerp(transform.rotation, позиция мыши, скорость поворота);
Как определить позицию мыши в пространстве?
Ray ray = cam.ScreenPointToRay (Input.mousePosition);
Не катит, т.к. нужен трансформ или Vector3.
|
(Offline)
|
|
17.04.2012, 16:21
|
#299
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
17.04.2012, 17:27
|
#300
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Ray ray = cam.ScreenPointToRay(Input.mousePosition); // RaycastHit hit; if (Physics.Raycast(ray, out hit)) { float rot = hit.point; transform.rotation = Quaternion.Slerp(transform.rotation, rot, turnSpeed * Time.deltaTime); }
В функцию на место rot нужна переменная float, а hit.point - Vector3 и не может быть float. (((
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:19.
|