Четверг, 28 Марта 2024, 20:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как осуществить движение в бок?
Как осуществить движение в бок?
DalyДата: Понедельник, 26 Мая 2014, 22:17 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Начал переписывать скрипт управления WASD и с толкнулся с проблемой, в перед и назад все работает хорошо, а какой символ поставить в бок придумать не могу.

Вот пример движения в перед
Код
//Движение в перед
   if (Input.GetKey (KeyCode.W))
   {
    player.transform.position += player.transform.forward * Speed * Time.deltaTime;
     
    if (_Run)
    {
     animation.CrossFade(A_Run.name); //Анимация движения
    }
    else
    {
     animation.CrossFade(A_Walk.name); //Анимация бездействия
    }
   }


А вот как приказать персонажу гулять в бок хз, какой знак нужно поменять (+=) (-=) чтобы заработало?
Код
player.transform.position += player.transform.forward * Speed * Time.deltaTime;
robertonoДата: Понедельник, 26 Мая 2014, 23:08 | Сообщение # 2
Чокнутый Кот
Сейчас нет на сайте
STARxWARS, существует так же transform.right
его уже можно и - и + делать. Так же и назад : -transform.forward
DalyДата: Вторник, 27 Мая 2014, 01:01 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
robertono, Спасибо, теперь возникла чучуть другая проблема.
Как сделать умное управление, выпилил скрипт на камеру(Вращение с зажатой ПКМ(Вытащил из стандартного контроллера)).

Но при вращении камеры, "Персонаж" упорно продолжается двигаться по прямой невзирая на направление камеры.

Как взять координаты камеры(туда куда смотри, Z вроде бы) и передать их в скрипт управления, чтобы персонаж бежал туда куда смотрит камера.

Цитата
player.gameObject.camera.transform.position += player.transform.forward * Speed * Time.deltaTime;


Не помогло =(

Добавлено (27.05.2014, 01:01)
---------------------------------------------
Может даже лучше было бы чтобы не сразу шел в ту сторону, а поворачивался.
Кто знает подскажите.

З,Ы Буду тоже пробовать тыкать

berilДата: Вторник, 27 Мая 2014, 01:17 | Сообщение # 4
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
player.transform.right



Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
DalyДата: Вторник, 27 Мая 2014, 01:24 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Вот в принцыпе пример.
https://www.youtube.com/watch?v=-5PAAR5KsNA&feature=youtu.be

Куда повернул камеру туда и будет идти персонаж.

Где взять такой скрипт, или подскажите строку, как взять кординаты вектора камеры, чтобы сказать герою идти по ним
allodsДата: Вторник, 27 Мая 2014, 01:29 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
transform.eulerAngles.x=Mathf.MoveTowardsAngle(transform.eulerAngles.x,Cam.main.transform.eulerAngles.x,speed*Time.deltaTime);

speed скорость поворота перса в ту сторону куда смотрит твоя камера по X
может не по X а по Z смотри сам


Сообщение отредактировал allods - Вторник, 27 Мая 2014, 01:29
DalyДата: Вторник, 27 Мая 2014, 01:34 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Заменил переменную speed на Speed и в место cam пришлось дописать Camera.

Код
transform.eulerAngles.x=Mathf.MoveTowardsAngle(transform.eulerAngles.x,Camera.main.transform.eulerAngles.x,Speed*Time.deltaTime);


вот выдало такую ошибку

Цитата
Cannot modify a value type return value of `UnityEngine.Transform.eulerAngles'. Consider storing the value in a temporary variable
ЛевшаДата: Вторник, 27 Мая 2014, 09:24 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Цитата STARxWARS ()
как взять кординаты вектора камеры, чтобы сказать герою идти по ним

camera.transform.forward


X.cor.R (Prologue)

Сообщение отредактировал Левша - Вторник, 27 Мая 2014, 09:24
allodsДата: Вторник, 27 Мая 2014, 14:52 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата STARxWARS ()
вот выдало такую ошибку

Странно ,я таким способом всегда кручу все во все в нужную сторону
RangerДата: Вторник, 27 Мая 2014, 14:59 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Цитата allods ()
transform.eulerAngles.x =

Нельзя менять компоненту вектора.
Код
transform.eulerAngles = Vector3(10, yRotation, 0);

так надо..
смотрите примеры.


DalyДата: Вторник, 27 Мая 2014, 15:02 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Ну вот весь скрипт передвижения:

Код
using UnityEngine;
using System.Collections;

public class MoveWASD : MonoBehaviour {

  //Скорость передвижения
  public GameObject player;  //Объект игрок
  public int Speed = 5;  //Скорость движения
  public int SpeedRotation = 7;  //Скорость поворота

  //Анимация
  public AnimationClip A_Run; //Бег
  public AnimationClip A_ComeBack; //Назад
  public AnimationClip A_Walk; //бездействие

  public bool _Run;

  void Start () {
   player = (GameObject)this.gameObject;
   
  }
   

  void Update () {
   //Передвижение
   //Движение в перед
   if (Input.GetKey (KeyCode.W))
   {
    //player.transform.position += player.transform.forward * Speed * Time.deltaTime;
    gameObject.camera.transform.position += player.transform.forward  * Speed * Time.deltaTime;

    if (_Run)
    {
     animation.CrossFade(A_Run.name); //Анимация движения
    }
    else
    {
     animation.CrossFade(A_Walk.name); //Анимация бездействия
    }
   }
   //Движение назад
   if (Input.GetKey (KeyCode.S))
   {
    player.transform.position -= player.transform.forward * Speed * Time.deltaTime;

    if (_Run)
    {
     animation.CrossFade(A_ComeBack.name); //Анимация движения
    }
    else
    {
     animation.CrossFade(A_Walk.name); //Анимация бездействия
    }
   }

   if (Input.GetKey (KeyCode.A))  
   {
    player.transform.position -= player.transform.right * Speed * Time.deltaTime;
   }

   if (Input.GetKey (KeyCode.D))  
   {
    player.transform.position += player.transform.right * Speed * Time.deltaTime;
   }
   
  }
}


Скрипт вешал на "Cub", к кубу прикрепил Camera.

Но когда я пытаюсь обратится к камере взять координаты, пишет вот такую ошибку:

Цитата
There is no 'Camera' attached to the "Cube" game object, but a script is trying to access it.


Пробовал обращаться по разному, в переводе вроде бы они конфликтуют то что нету у камеру доступа но она пытается его получить, или как-то так.

P.S (camera.transform.forward ) вроде бы не правильно, этой строкой насколько я понял ты указываешь чтобы двигалась камера, а не "герой"(Cub)



Охота самому потренироватся, потыкать, а то юзать постоянно чужие скрипты не айс)
RangerДата: Вторник, 27 Мая 2014, 15:07 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
Нет компонента камера в кубе. что непонятного?
Твоя камера стоит чилдом, а не компонентом.
menu->Component-> add component. Camera.




Сообщение отредактировал Ranger - Вторник, 27 Мая 2014, 15:07
allodsДата: Вторник, 27 Мая 2014, 15:26 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
Цитата Ranger ()
Нельзя менять компоненту вектора.

Ну да блин, да точно именно так
lentinantДата: Вторник, 27 Мая 2014, 17:15 | Сообщение # 14
ленивый программист
Сейчас нет на сайте
Camera.main даст вам доступ к камере.

Когда-то тут будут ссылки на крутые проекты. Или нет.
ЛевшаДата: Среда, 28 Мая 2014, 06:38 | Сообщение # 15
почти ветеран
Сейчас нет на сайте
Цитата Ranger ()
transform.eulerAngles.x =
Нельзя менять компоненту вектора.

На .Js можно.


X.cor.R (Prologue)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как осуществить движение в бок?
  • Страница 1 из 1
  • 1
Поиск:

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