Я пытаюсь заставить своих врагов запускать анимацию, чтобы играть, когда он двигается, и переключиться обратно в режим ожидания, когда он остановился. Однако мой текущий код, похоже, не делает этого, и вместо этого мой враг постоянно находится в состоянии ожидания. Я проверил, что мои переменные устанавливаются, но они просто не фильтруются до моего аниматора, чтобы сделать переходы. У меня также есть ошибка, которая, похоже, не прекращает игру от игры, а всплывает в консоли. Ошибка Controller 'Pirate': Transition " in state 'Idle_Pirate' uses parameter 'walking' which is not compatible with condition type.
Я предполагаю, что это преступник, но, попробовав несколько разных предложений от googling, я изо всех сил пытаюсь найти решение. Это код из сценария, прикрепленного к моему врагу. Извиняюсь, если это немного грубо, я все еще учусь. Любая помощь приветствуется.Unity C# Аниматор Переходы
using UnityEngine;
using System.Collections;
public class AI : MonoBehaviour {
public float walkSpeed = 2.0f;
public float wallLeft = 0.0f;
public float wallRight = 2.0f;
float walkingDirection = 1.0f;
Vector3 walkAmount;
float timeCheck = 0.0f;
float walkCheck = 0.0f;
public float maxSpeed = 5f;
bool facingRight = true;
bool idle = true;
Animator anim;
// Use this for initialization
void Start() {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate() {
}
void Update() {
if (timeCheck >= 2.0f) {
walkAmount.x = walkingDirection * walkSpeed * Time.deltaTime;
if (walkingDirection > 0.0f && transform.position.x >= wallRight) {
walkingDirection = -1.0f;
Flip();
} else if (walkingDirection < 0.0f && transform.position.x <= wallLeft) {
walkingDirection = 1.0f;
Flip();
}
walkCheck = walkCheck + Time.deltaTime;
idle = false;
}
if (walkCheck >= 2.0f) {
idle = true;
walkAmount.x = 0;
timeCheck = 0.0f;
walkCheck = 0.0f;
}
timeCheck = timeCheck + Time.deltaTime;
transform.Translate(walkAmount);
anim.SetBool ("walking", idle);
}
void Flip() {
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Правильный тег для Unity3D - это 'unity3d' – aggsol
А я вижу, мой плохой, отмеченный в следующий раз! Благодарю. – CMA