проблема движение объекта и камеры(РЕШЕНО)
| |
d0x | Дата: Суббота, 10 Января 2015, 01:13 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Имеется проблема, имеется объект, управляю им нормально, но вот когда поворачиваю камеру допустив вправо и нажимаю движение вперед, то объект продолжает ехать вперед т.е. мне нужно при повороте камеры - поворачивался и объект(надеюсь понятно объяснил)
объект движется за счет импульса. Код rigidbody.AddForce(Vector3.forward * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse); rigidbody.AddForce(Vector3.right * 10.00f *Time.deltaTime * inputDevice.LeftStick.Right, ForceMode.Impulse); rigidbody.AddForce(Vector3.left * 10.00f *Time.deltaTime * inputDevice.LeftStick.Left, ForceMode.Impulse);
Добавлено (10 января 2015, 01:13) --------------------------------------------- пробовал крутить объект вместе с камерой, но все равно никак(
Сообщение отредактировал d0x - Вторник, 20 Января 2015, 16:25 |
|
| |
MANMANA | Дата: Суббота, 10 Января 2015, 03:17 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| сделай персонажа дочерним к камере, но тогда забудь про управление камерой вверх-вниз, вперед назад.
либо, когда вращаешь камеру, вращай и самого персонажа с помощью Rigidbody.MoveRotation но здесь согласование углов твоей mouse orbit и персонажа
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
d0x | Дата: Воскресенье, 11 Января 2015, 21:54 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) сделай персонажа дочерним к камере, но тогда забудь про управление камерой вверх-вниз, вперед назад. как раз мне и не нужно чтобы вниз-вверх, вперед-назад камера вращалась, только влево-вправо) но когда делаю персонажа дочернего к камере у меня крутится камера во все стороны...Добавлено (10 января 2015, 14:09) --------------------------------------------- как сделано допустим когда поворачиваешь камеру, но по объекту не видно то что он крутится, а он все равно при движении прямо движется куда камера смотрит? Вот мне нужно тоже самое, но не выходит... поворот камеры делаю так: Код if(Input.GetMouseButton(1)){ x += Input.GetAxis("Mouse X") * xSpeed * 0.02f; y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f; } y = ClampAngle(y, yMinLimit, yMaxLimit); Добавлено (11 января 2015, 21:54) --------------------------------------------- все еще нужна помощь) добрые люди, помогите) Цитата d0x ( ) как сделано допустим когда поворачиваешь камеру, но по объекту не видно то что он крутится, а он все равно при движении прямо движется куда камера смотрит? Вот мне нужно тоже самое, но не выходит... поворот камеры делаю так:
|
|
| |
MANMANA | Дата: Воскресенье, 11 Января 2015, 22:19 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| моя голова не понимайт! дай ссылку на игру, или объясни по-человечески.
что это "как сделано допустим когда поворачиваешь камеру, но по объекту не видно то что он крутится, а он все равно при движении прямо движется куда камера смотрит?" это уже реализовано в какой-то игре или патент получать будешь?
тебе нужно, чтобы при повороте камеры персонаж поворачивался в направлении, куда смотрит камера? персонаж является target для камеры? возьми направление камеры и через Lerp выставляй направление для персонажа (вертикальную ось исключить, чтобы персонаж не наклонялся вбок, вперед-назад; если персонажу и не нужно отклоняться от оси z, то замораживай z ось и Lerp'ь по всем трем осям).
посмотри здесь или здесь
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
d0x | Дата: Воскресенье, 11 Января 2015, 22:41 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) тебе нужно, чтобы при повороте камеры персонаж поворачивался в направлении, куда смотрит камера? да)Добавлено (11 января 2015, 22:40) --------------------------------------------- мой персонаж обычная сфера, катающаяся по платформе. Добавлено (11 января 2015, 22:41) ---------------------------------------------
Цитата MANMANA ( ) персонаж является target для камеры? так же да.
|
|
| |
MANMANA | Дата: Воскресенье, 11 Января 2015, 22:52 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| замени rigidbody.AddForce(Vector3.forward * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse); на rigidbody.AddForce(Vector3.myCamera * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
где Vector3.myCamera - вектор твоей камеры camera - твоя камера
вектор втаскиваешь в скрипт через ГО или Transform а-ля
т.е. в Class'e
public GameObject myCamera; или public transform myCamera;
в инспекторе перетаскиваешь камеру в слот в скрипте
в Update
rigidbody.AddForce(Vector3.myCamera * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
как-то так
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
d0x | Дата: Воскресенье, 11 Января 2015, 23:06 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) замени rigidbody.AddForce(Vector3.forward * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse); на rigidbody.AddForce(Vector3.myCamera * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
где Vector3.myCamera - вектор твоей камеры camera - твоя камера
вектор втаскиваешь в скрипт через ГО или Transform а-ля
т.е. в Class'e
public GameObject myCamera; или public transform myCamera;
в инспекторе перетаскиваешь камеру в слот в скрипте
в Update
rigidbody.AddForce(Vector3.myCamera * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
как-то так спасиб сейчас пробну)
Добавлено (11 января 2015, 23:06) --------------------------------------------- поставил: Код public Transform myCamera; void Update () {
rigidbody.AddForce(Vector3.(но вот тут нет выбора myCamera) * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse); камеру перетащил в myCamera как положено.
Сообщение отредактировал d0x - Воскресенье, 11 Января 2015, 23:07 |
|
| |
MANMANA | Дата: Воскресенье, 11 Января 2015, 23:43 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| попробуй вот такую строку
rigidbody.AddForce(myCamera.forward * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);Добавлено (11 января 2015, 23:43) --------------------------------------------- пардон, перечитал Ваше сообщение. нервный я что-то сегодня
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Воскресенье, 11 Января 2015, 23:43 |
|
| |
d0x | Дата: Воскресенье, 11 Января 2015, 23:54 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) rigidbody.AddForce(myCamera.forward * 10.00f *Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
вот так ничего не происходит) как обычно камера стабильно летает за объектом, но не поворачивает влево-вправо(
|
|
| |
MANMANA | Дата: Понедельник, 12 Января 2015, 00:08 | Сообщение # 10 |
почти ветеран
Сейчас нет на сайте
| понятно... посмотите ссылки, которые я Вам кидал. там есть скрипты управления камерой.
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
d0x | Дата: Понедельник, 12 Января 2015, 00:18 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) понятно... посмотите ссылки, которые я Вам кидал. там есть скрипты управления камерой. хорошо, но вот как определять в какую сторону я именно джостиком повернул... вот в
Код rigidbody.AddForce(Vector3.right * 10.00f *Time.deltaTime * inputDevice.LeftStick.Right, ForceMode.Impulse);
тут отвечает inputDevice.LeftStick.Right т.е. когда джостик поворачиваю вправо, а на том же transform.Rotate как как определить это...
пробовал: Код cam2.transform.Rotate(Vector3.right * Time.deltaTime, inputDevice.LeftStick.Right); не катит(
|
|
| |
allods | Дата: Понедельник, 12 Января 2015, 00:32 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| я так понял тебе надо идти в сторону камеры? туда куда смотрит камера да ?
тогда лерпи Vector3 перса eulerAngles.y в eulerAngles.y камеры
Код float angleY = Mathf.LerpAngle (transform.eulerAngles.y ,cam.eulerAngles.y,rotSpeed*Time.deltaTime);
transform.eulerAngles = new Vector3 (transform.eulerAngles.x,yRot,transform.eulerAngles.z);
и двигай перса
Код Vector3 move = new Vector3 (Input.GetAxis("Horizontal"),0,(Input.GetAxis("Vertical"));
rigidbody.AddRelativeForce(move * 10.0f*Time.deltaTime , ForceMode.Acceleration);
Horizontal и Vertical замени на переменные твоего джойстика
все работает 100 %
Сообщение отредактировал allods - Понедельник, 12 Января 2015, 00:42 |
|
| |
d0x | Дата: Понедельник, 12 Января 2015, 00:50 | Сообщение # 13 |
частый гость
Сейчас нет на сайте
| Цитата allods ( ) я так понял тебе надо идти в сторону камеры? туда куда смотрит камера да ? именно)Добавлено (12 января 2015, 00:50) --------------------------------------------- а если мне нужно чтобы камера крутилась только по оси X ? я так понял нужно только это? :
Код transform.eulerAngles = new Vector3 (transform.eulerAngles.x,yRot,transform.eulerAngles.z);
Vector3 move = new Vector3 (Input.GetAxis("Horizontal"),0,0);
rigidbody.AddRelativeForce(move * 10.0f*Time.deltaTime , ForceMode.Acceleration);
|
|
| |
allods | Дата: Понедельник, 12 Января 2015, 00:55 | Сообщение # 14 |
почти ветеран
Сейчас нет на сайте
| а зачем изменять то что камеры никак не касается ? это для движения перса в перед и стороны относительно куда он повернут относительно камеры.
крутить камеру по Y это по горизонтали по X это по вертикали Я дал код только для поворота перса и движения.
Для камеры используй стандартный MouseOrbit
Сообщение отредактировал allods - Понедельник, 12 Января 2015, 00:56 |
|
| |
d0x | Дата: Понедельник, 12 Января 2015, 01:04 | Сообщение # 15 |
частый гость
Сейчас нет на сайте
| а если допустим так: на камере висит:
Код x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
т.е. по нажатию мыши я поворачиваю камеру.
А на персонаже:
Код rigidbody.AddForce(Vector3.forward * 10.00f * Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
катится вперед, вот как сделать так чтобы при нажатии вперед, персонаж ехал куда камера смотрит, я надеюсь так будет проще для меня))
Сообщение отредактировал d0x - Понедельник, 12 Января 2015, 01:05 |
|
| |
allods | Дата: Понедельник, 12 Января 2015, 01:11 | Сообщение # 16 |
почти ветеран
Сейчас нет на сайте
| а твой перс вертится за камерой ?
если да то
rigidbody.AddRelativeForce(Vector3.forward * 10.0f*Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse);
|
|
| |
d0x | Дата: Понедельник, 12 Января 2015, 01:25 | Сообщение # 17 |
частый гость
Сейчас нет на сайте
| Цитата allods ( ) а твой перс вертится за камерой ? вот именно то что он не вертится за камерой)Добавлено (12 января 2015, 01:25) --------------------------------------------- на персе скрипт только движения его физикой: Код rigidbody.AddForce(Vector3.forward * 10.00f * Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse); rigidbody.AddForce(Vector3.right * 10.00f *Time.deltaTime * inputDevice.LeftStick.Right, ForceMode.Impulse); rigidbody.AddForce(Vector3.left * 10.00f *Time.deltaTime * inputDevice.LeftStick.Left, ForceMode.Impulse);
на камере только поворот по x.
Код if(Input.GetMouseButton(1)){ x += Input.GetAxis("Mouse X") * xSpeed * 0.02f; } }
|
|
| |
MANMANA | Дата: Понедельник, 12 Января 2015, 01:29 | Сообщение # 18 |
почти ветеран
Сейчас нет на сайте
| скрипт, который висит на камере замени на этот
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Понедельник, 12 Января 2015, 01:30 |
|
| |
d0x | Дата: Суббота, 17 Января 2015, 11:54 | Сообщение # 19 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) скрипт, который висит на камере замени на этот
спасиб, скрипт камеру улучшил)
и методом тыка сделал: на персонаже:
Код public Camera cam2; rigidbody.AddForce(cam2.transform.forward * 10.00f * Time.deltaTime * inputDevice.LeftStickY, ForceMode.Impulse); rigidbody.AddForce(cam2.transform.right * 10.00f *Time.deltaTime * inputDevice.LeftStick.Right, ForceMode.Impulse); rigidbody.AddForce(-cam2.transform.right * 10.00f *Time.deltaTime * inputDevice.LeftStick.Left, ForceMode.Impulse); всем спасибо.Добавлено (12 января 2015, 02:21) --------------------------------------------- можно еще вопрос сюда, чтобы тему не создавать лишнюю... Почему Point ligh в unity отображается норм, а когда на Android запускаю, то нет отражения цветов на поверхности где находится персонаж? Добавлено (13 января 2015, 23:13) ---------------------------------------------
Цитата d0x ( ) Почему Point ligh в unity отображается норм, а когда на Android запускаю, то нет отражения цветов на поверхности где находится персонаж? никто не сталкивался?Добавлено (17 января 2015, 11:54) --------------------------------------------- м?
|
|
| |
allods | Дата: Суббота, 17 Января 2015, 21:32 | Сообщение # 20 |
почти ветеран
Сейчас нет на сайте
| Все очень понятно по твоему рассказу, ты хоть скрин выложи
|
|
| |
|