Помощь новичку )
|
|
Sonik315 | Дата: Среда, 04 Ноября 2015, 23:44 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Года 3 назад начал увлекаться созданием игр , очень затягивающее дело Нашёл подходящий и удобный для меня движок Unity3D , начинал с трёхмерной графики и , вроде как , немного разобрался . Но тут в голову пришла идея попробовать 2D графику , тут - то и начались первые вопросы . Нашёл неплохой видео урок на официальном сайте Unity и на основе его написал небольшой скрип для передвижения 2D персонажа . Получилось вроде бы неплохо , но огорчает то что перед перехода с одной анимации в другую (например с анимации покоя в анимацию бега) происходит некоторая задержка . Google к сожалению ничего не знает (или это я так криво ищу) . Не могла бы вы подсказать как устранить эту ошибку ??? Очень признателен , заранее В основном обучаюсь сам , но тут нужна помощь знатоков Прошу прощения если что - то не так написал , я новичок , не судите строго , буду исправляться ) Вот сам скрипт :
Код using UnityEngine; using System.Collections;
public class Muvement : MonoBehaviour { public float speed = 10f; // скорость передвижения bool facingRight = true ; // проверка на разворот (лево , право) public Rigidbody2D myRigidBody; // связка с Rigidbody игрока , нужна для передвижения public GameObject Player;// нужна для разварота (в видео иной способ , но он у меня // неработает , так что я свой придумал Animator anim; // для воспроизведения и перехода анимаций bool grounded = false; // стоит ли игрок на плоскости или нет public Transform groundChek;//нужна для проверки являеться ли объект плоскостью или нет float groundRadius = 0.2f; // радиус для проверки public LayerMask whatIsGround;//что являеться плоскостью public float jumpForce = 700f;//сила прыжка
void Start () { myRigidBody.GetComponent<Rigidbody2D>();//присваиванье компонента Rigidbody anim = GetComponent<Animator>();// присваиванье компонета Animator }
void FixedUpdate () { grounded = Physics2D.OverlapCircle(groundChek.position, groundRadius, whatIsGround);//вычисляем стоит ли игрок на плоскости anim.SetBool("Ground", grounded);//изменяем переменную Ground в Animator anim.SetFloat("vSpeed", myRigidBody.velocity.y);//изменяем переменную vSpeed в Animator
float muve = Input.GetAxis("Horizontal");//для передвижения anim.SetFloat("Speed", Mathf.Abs(muve));//изменяем переменную Speed в Animator myRigidBody.velocity = new Vector2(muve * speed, myRigidBody.velocity.y);//благодоря этой строчке персонаж движеться if (muve > 0 && !facingRight) //условие для поворота Flip(); else if (muve < 0 && facingRight) // условие для поворота Flip(); }
void Update() { if (grounded && Input.GetKeyDown(KeyCode.Space)) { // если нажали Пробел то anim.SetBool("Ground", false);//изменяем переменную Ground в Animator myRigidBody.AddForce(new Vector2(0, jumpForce));//изменяем положение персонажа } } void Flip() { // функция для поворота (лево право) facingRight = !facingRight; Player.transform.localScale = new Vector3(Player.transform.localScale.x * -1f, Player.transform.localScale.y, Player.transform.localScale.z); //для того что бы мой персонаж не искожался полностью по localScale , придумал вот такую громоскую , зато //работающую точку ) теперь он зеркалиться только по X } }
Иногда именно те, кто, казалось бы, ничего из себя не представляет, делает то, что никто и представить не мог.
|
|
| |
Pocifik | Дата: Четверг, 05 Ноября 2015, 00:01 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Sonik315, Могу предположить что дело в аниматоре, а не в коде, хотя код даже не смотрел. Там стандартная задержка стоит для гладких переходов анимации (для 3д анимации в основном). Нажми на линию между анимациями и там поищи время и ожидания завершения анимации.
|
|
| |
beril | Дата: Четверг, 05 Ноября 2015, 01:32 | Сообщение # 3 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| В Animator попробуй поиграться с переходами анимации
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
seaman | Дата: Четверг, 05 Ноября 2015, 09:17 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Убрать "Has exit time"
|
|
| |
Sonik315 | Дата: Четверг, 05 Ноября 2015, 20:40 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Спасибо всем огромное , очень признателен )))) Сейчас будем пробовать , ещё раз выражаю огромную благодарность ! Добавлено (05 ноября 2015, 20:40) --------------------------------------------- Вы были правы , действительно , проблема была в самом Animator'е , по совету seaman убрал галочки с "Has exit time" , помогло , теперь всё идёт как надо ) Огромное всем ещё раз спасибо
Иногда именно те, кто, казалось бы, ничего из себя не представляет, делает то, что никто и представить не мог.
|
|
| |