Вторник, 19 Марта 2024, 12:36

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » 2D-движки для создания игр » Анимация (unity 3d)
Анимация
timur2018Дата: Воскресенье, 04 Декабря 2016, 15:45 | Сообщение # 1
был не раз
Сейчас нет на сайте
using UnityEngine;
using System.Collections;

public class playerController : MonoBehaviour {

public float playerSpeed = 5f;
private Animator animator;

void Star(){

animator = this.GetComponent<Animator >( );

}
void Update () {
float transfV = Input.GetAxis ("Vertical") * (playerSpeed) * Time.deltaTime;
float transfH = Input.GetAxis ("Horizontal") * playerSpeed * Time.deltaTime;

if (transfH > 0)
animator.SetBool ("Right", true);

transform.Translate (new Vector3 (transfH, transfV, 0));
}
персонаж двигается, но анимация не проигрывается. В чем проблема?
valera_zaДата: Воскресенье, 04 Декабря 2016, 17:19 | Сообщение # 2
участник
Сейчас нет на сайте
timur2018,
Цитата
animator.SetBool ("Right", true);

animator.Play ("Right");
timur2018Дата: Воскресенье, 04 Декабря 2016, 18:22 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата valera_za ()
animator.Play ("Right");

не получилось

using UnityEngine;
using System.Collections;

public class playerController : MonoBehaviour {

public float playerSpeed = 5f;
public Vector2 curSavePos;
private Animator anim;

//public float
// Update is called once per frame

void Star(){

anim = gameObject.GetComponent<Animator> ();

}
void Update () {
float transfV = Input.GetAxis ("Vertical") * (playerSpeed) * Time.deltaTime;
float transfH = Input.GetAxis ("Horizontal") * playerSpeed * Time.deltaTime;

gameObject.transform.Translate (transfH, transfV,0);

if (Input.GetKeyDown(KeyCode.D) == true) {
anim.SetBool ("Left", false);
anim.SetBool ("Right", true);
anim.SetBool ("Stop", false);
anim.Play ("Right");
}
if (Input.GetKeyDown(KeyCode.A) == true) {
anim.SetBool ("Left", true);
anim.SetBool ("Right", false);
anim.SetBool ("Stop", false);
anim.Play ("Left");
}

}

Добавлено (04 декабря 2016, 18:22)
---------------------------------------------
и ошибку выводит
NullReferenceException: Object reference not set to an instance of an object
playerController.Update () (at Assets/scripts/playerController.cs:31)

valera_zaДата: Воскресенье, 04 Декабря 2016, 18:23 | Сообщение # 4
участник
Сейчас нет на сайте
timur2018, я про такой подход

вроде должно работать... :)
//anim.SetBool ("Left", true);
//так тоже должно работать ,но вроде в окне настроек анимаций устанавливать переключения надо .bool
//я уж и не помню но по моему так


Сообщение отредактировал valera_za - Воскресенье, 04 Декабря 2016, 18:48
ReanДата: Воскресенье, 04 Декабря 2016, 20:04 | Сообщение # 5
участник
Сейчас нет на сайте
valera_za, не понял, а зачем две ссылки на один и тот же аниматор? И при этом, не используемые? Опечатка?
timur2018, по факту достаточно одного правильно настроенного аниматора. Condition'ы в аниматоре выставлены? Советую ознакомиться с неплохим уроком "2D Roguelike".
valera_zaДата: Воскресенье, 04 Декабря 2016, 20:42 | Сообщение # 6
участник
Сейчас нет на сайте
Rean,
Цитата
Опечатка?
походу да
просто тогда его путь таким должен быть

можно что то посмотреть как в этом аля платформере
хотя может ему это и не подойдет...
Либо так и оставить свой скрипт
Но тогда переходы состояний в аниматоре он должен настроить


Сообщение отредактировал valera_za - Воскресенье, 04 Декабря 2016, 21:32
Форум игроделов » Движки для разработки игр и сложные системы разработки » 2D-движки для создания игр » Анимация (unity 3d)
  • Страница 1 из 1
  • 1
Поиск:

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