Результаты поиска
| |
Leyron | Дата: Суббота, 23 Мая 2015, 09:57 | Сообщение # 1 | Тема: Не двигается персонаж [Решено] |
был не раз
Сейчас нет на сайте
| У меня все анимации персонажа были записаны на месте, а как я понимаю, root motion нужно юзать, если у тебя в анимации происходит смена координат персонажа. А т.к. я всё передвижение(в том числе прыжок), осуществлял с помощью кода, root motion не работал так как надо.
|
|
| |
Leyron | Дата: Понедельник, 18 Мая 2015, 00:07 | Сообщение # 2 | Тема: Не двигается персонаж [Решено] |
был не раз
Сейчас нет на сайте
| Я планировал управлять кодом Добавлено (18 мая 2015, 00:07) --------------------------------------------- Проблему решил следующим образом: во всех анимациях персонажа удалил анимацию главного в иерархии объекта, тобишь все части остались анимироваными Видимо делалась привязка к позиции всего персонажа в анимации
beril'у лайк за то, что пытался помочь
|
|
| |
Leyron | Дата: Воскресенье, 17 Мая 2015, 21:06 | Сообщение # 3 | Тема: Не двигается персонаж [Решено] |
был не раз
Сейчас нет на сайте
| Цитата beril ( ) pl.transform.localPosition += (Vector3)Vector2.right * speed_run * Time.deltaTime; - разве такое приведение типов возможно ? Да, возможно, но я даже не знаю зачем так сделал, изменил на Vector3.right
Цитата beril ( ) Попробуй метод Movent в Update вызывать, ну или Time.deltaTime убери Попробовал всё выше сказанное, тщетно.
Заметил одну вещь, если поставить галочку на Apply Root Motion в компоненте Animator, то персонаж начинает двигаться, но тогда анимация не совсем так работает. При Apply Root Motion персонаж нормально двигается, но постепенно поднимается вверх(взлетает) и не реагирует на пробел(не прыгает).
|
|
| |
Leyron | Дата: Воскресенье, 17 Мая 2015, 20:05 | Сообщение # 4 | Тема: Не двигается персонаж [Решено] |
был не раз
Сейчас нет на сайте
| Кодом
Код using UnityEngine; using System.Collections;
public class CharMove : MonoBehaviour { public float jump_force; public float speed_run;
public Transform rayEnd1; public Transform rayEnd2; public Transform rayEnd3;
public Transform pl; private bool isGround = true; private Vector3 moving;
private Animator anim; private Rigidbody2D phys; void Start () { anim = GetComponent<Animator> (); phys = GetComponent<Rigidbody2D> (); }
void FixedUpdate () { Movement (); Phys (); RayCasting (); }
void Movement() { anim.SetBool("Run", false); if (Input.GetKey(KeyCode.D)) { pl.transform.localPosition += (Vector3)Vector2.right * speed_run * Time.deltaTime; pl.transform.eulerAngles = new Vector2(0, 0); anim.SetBool("Run", true); } else if (Input.GetKey(KeyCode.A)) { pl.transform.localPosition -= (Vector3)Vector2.right * speed_run * Time.deltaTime; pl.transform.eulerAngles = new Vector2(0, 180); anim.SetBool("Run", true); }
if (Mathf.Abs (pl.rotation.eulerAngles.z) >= 15 && Mathf.Abs (pl.rotation.eulerAngles.z) <= 345) { pl.transform.eulerAngles = new Vector3 (0, pl.transform.eulerAngles.y, 15); phys.fixedAngle = true; } else phys.fixedAngle = false;
} void Phys() { anim.SetBool ("isGround", isGround); if (Input.GetKeyDown (KeyCode.Space) && isGround == true) { phys.AddForce (Vector2.up * jump_force, ForceMode2D.Impulse); anim.SetBool ("Jump", true); } else if (isGround == true) { anim.SetBool ("Jump", false); } else { anim.SetBool ("Jump", true); } }
void RayCasting() { isGround = Physics2D.Linecast (pl.transform.position, rayEnd1.position, 1 << LayerMask.NameToLayer("Ground")); if (isGround == false) isGround = Physics2D.Linecast (pl.transform.position, rayEnd2.position, 1 << LayerMask.NameToLayer("Ground")); if (isGround == false) isGround = Physics2D.Linecast (pl.transform.position, rayEnd3.position, 1 << LayerMask.NameToLayer("Ground")); Debug.DrawLine (pl.transform.position, rayEnd1.position, Color.blue); Debug.DrawLine (pl.transform.position, rayEnd2.position, Color.blue); Debug.DrawLine (pl.transform.position, rayEnd3.position, Color.blue);
} }
pl - это персонаж
Сообщение отредактировал Leyron - Воскресенье, 17 Мая 2015, 20:10 |
|
| |
Leyron | Дата: Воскресенье, 17 Мая 2015, 14:23 | Сообщение # 5 | Тема: Не двигается персонаж [Решено] |
был не раз
Сейчас нет на сайте
| Здравствуйте! Периодически бывает следующая проблема: персонаж не двигается с места, но все анимации проигрываются(нажимаю D анимация ходьбы есть, а движения нет), обычно решал это просто загружая старую версию проекта, но на этот раз случайно сохранил. Эта байда уже надоела, может быть кто-нибудь сталкивался с подобным и поможет решить. P.S. игра 2D, все анимации записывались в Unity
Добавлено (17 мая 2015, 14:23) --------------------------------------------- Ещё кое-что: в компоненте Animator, при добавлении ранее рабочего контроллера, появляется надпись "Root position or rotation are controlled by curves".
|
|
| |
Leyron | Дата: Вторник, 03 Июня 2014, 10:19 | Сообщение # 6 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата OpenGOO ( ) Значит ищи ошибку в коде. Ну ладно, спасибо тебе большое!
|
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 20:55 | Сообщение # 7 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата OpenGOO ( ) Да,но начальная скорость движения куба будет зависеть от массы объектов и скорости персонажа в момент столкновения.
Либо все считай по физическим формулам, либо в момент столкновения, передай импульс кубику. У меня есть 2 объекта, один из них тот куб который я хочу превратить в льдышку, а второй является льдышкой(на которой я тестирую). Так вот, с льдышкой всё работает, а вот когда изменяю у куба свойства на те, что есть у льдышки - не робит
Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 21:18 |
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 17:37 | Сообщение # 8 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата OpenGOO ( ) Как код выглядит? Персонаж - физический объект, так что код не применяю. Просто персонаж сталкивается с кубиком, и куб по законам физики отталкивается?
|
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 17:01 | Сообщение # 9 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата OpenGOO ( ) Тогда вопрос: Как ты его двигаешь? Толкаю персонажем!
Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 17:02 |
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 16:54 | Сообщение # 10 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата OpenGOO ( ) ты какой коэффициент трения выставляешь? 0, когда он в лед превращается
Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 16:54 |
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 15:48 | Сообщение # 11 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата HaGe ( ) вообще лучше сделать так, как подсказывает OpenGOO Я так сделал, но вот что-то не меняется, кубик как ездил плохо по полу так и ездит. Я хотел сделать, чтобы кубик превращался в ледяной кубик и начинал лучше скользить по поверхностям.
|
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 15:34 | Сообщение # 12 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата OpenGOO ( ) Между friction и density нет никакой связи. От density зависит только масса. Так ведь чем тяжелее объект тем не охотнее он ездит по полу.
Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 15:43 |
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 15:24 | Сообщение # 13 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Цитата HaGe ( ) var - переменная, которая копируется из род. объекта А какая например переменная, если мне нужно трение, то "friction"?
Добавлено (02.06.2014, 15:10) --------------------------------------------- Цитата OpenGOO ( ) В чем проблема сделать например так?
Код Create Event:
execute code:
var fixture; fixture = physics_fixture_create(); physics_fixture_set_circle_shape(fixture, sprite_height * 0.5); physics_fixture_set_density(fixture, 1.0); physics_fixture_set_restitution(fixture, 0.5); physics_fixture_set_collision_group(fixture, 1); fix = physics_fixture_bind(fixture, id); physics_fixture_delete(fixture);
Restitution работает, а вот friction не робит Добавлено (02.06.2014, 15:24) --------------------------------------------- Хотя возможно, что density не меняется.
Сообщение отредактировал Leyron - Понедельник, 02 Июня 2014, 15:24 |
|
| |
Leyron | Дата: Понедельник, 02 Июня 2014, 12:50 | Сообщение # 14 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Значит только заменой объекта можно добиться этого? Просто пробовал уже замещать, получается не очень... Ну всем спасибо кто отписался, всем дал +.
|
|
| |
Leyron | Дата: Воскресенье, 01 Июня 2014, 17:20 | Сообщение # 15 | Тема: Game Maker Studio. Встроенная физика(box2d).Помогите |
был не раз
Сейчас нет на сайте
| Всем, привет. Использую встроенную физику в Game Maker Studio(box2d) и такой вопрос: можно ли в ходе игры менять физ. свойства объекта(например трение или тяжесть)?
Сообщение отредактировал Leyron - Воскресенье, 01 Июня 2014, 21:56 |
|
| |
|