Пятница, 29 Ноября 2024, 14:10

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
LeyronДата: Суббота, 23 Мая 2015, 09:57 | Сообщение # 1 | Тема: Не двигается персонаж [Решено]
был не раз
Сейчас нет на сайте
У меня все анимации персонажа были записаны на месте, а как я понимаю, root motion нужно юзать, если у тебя в анимации происходит смена координат персонажа. А т.к. я всё передвижение(в том числе прыжок), осуществлял с помощью кода, root motion не работал так как надо.
LeyronДата: Понедельник, 18 Мая 2015, 00:07 | Сообщение # 2 | Тема: Не двигается персонаж [Решено]
был не раз
Сейчас нет на сайте
Я планировал управлять кодом

Добавлено (18 мая 2015, 00:07)
---------------------------------------------
Проблему решил следующим образом: во всех анимациях персонажа удалил анимацию главного в иерархии объекта, тобишь все части остались анимироваными
Видимо делалась привязка к позиции всего персонажа в анимации

beril'у лайк за то, что пытался помочь happy

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 не робит cry

Добавлено (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) и такой вопрос: можно ли в ходе игры менять физ. свойства объекта(например трение или тяжесть)? cry

Сообщение отредактировал Leyron - Воскресенье, 01 Июня 2014, 21:56
  • Страница 1 из 1
  • 1
Поиск:

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