Как осуществить движение в бок?
|
|
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)
|
|
| |