私はその後、徒歩/実行との間にはアニメーションがありません停止キャラクターが歩いたり、実行していると、彼がアイドルに実行徒歩/からアニメーターに状態を変更クリックした点になっているとき、彼は歩くようなので、それが見えることを意味します起動停止。どのようにキャラクターを開始/停止/ゆっくりと走ることができますか?
私はアニメーターに3つの状態があります。ヒューマノイドウォーク、ヒューマノイドラン、ヒューマノイドイドル。 フェージングのようなものが必要です。例えば 行の場合:彼は「ウォーク」を起動したときに
_animator.CrossFade("Walk", 0);
私はそれは歩行速度に少しゆっくりになりますので1に0に変更します。しかし、「Idle」では、1に変更すると、彼が止まるまでフェードしない何かになります。言い換えれば
iは、フェージング効果を追加したい場合は、文字の開始/ウォーキング/ランニングとも私はクリック/ダブルクリックを停止し、彼はウォークとファイル名を指定して実行を切り替えます。いくつかのフェードエフェクトを作成して、状態間をすばやく切り替えることはありません。
using UnityEngine;
using System.Collections;
public class ClickToMove : MonoBehaviour
{
public int speed = 5; // Determines how quickly object moves towards position
public float rotationSpeed = 5f;
private Vector3 targetPosition;
private Animator _animator;
private Vector3 destination;
private Quaternion targetRotation;
public float clickDelta = 0.35f; // Max between two click to be considered a double click
private bool click = false;
private float clickTime;
void Start()
{
_animator = GetComponent<Animator>();
_animator.CrossFade("Idle", 0);
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (click && Time.time <= (clickTime + clickDelta))
{
_animator.CrossFade("Run", 0);
click = false;
}
else
{
click = true;
clickTime = Time.time;
}
_animator.CrossFade("Walk", 0);
Plane playerPlane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast(ray, out hitdist))
{
Vector3 targetPoint = ray.GetPoint(hitdist);
targetPosition = ray.GetPoint(hitdist);
targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
destination = targetPosition;
}
}
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, rotationSpeed);
if ((transform.position - destination).magnitude < 0.7f)
{
_animator.CrossFade("Idle", 0);
}
}
}
Animator Controllerを使用していませんか?このような国家は、それが何のために設計されたものではないのですか? – Abion47