Пятница, 26 Апреля 2024, 18:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » проблема движение объекта и камеры(РЕШЕНО) (андроид)
проблема движение объекта и камеры(РЕШЕНО)
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)
---------------------------------------------
пардон, перечитал Ваше сообщение. нервный я что-то сегодня sad


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
почти ветеран
Сейчас нет на сайте
Все очень понятно по твоему рассказу, ты хоть скрин выложи
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » проблема движение объекта и камеры(РЕШЕНО) (андроид)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг