在游戏中,经常会出现角色需要以某种方式移动,使手或脚在特定时间到达特定位置的情况。例如,角色可能需要跳过踏脚石或跳起来抓住头顶的横梁。
您可以使用Animator.MatchTarget 函数来处理这种情况。例如,假设您想安排一种角色跳到平台上的情况,并且您已经有一个动画剪辑可用于动画角色或简单动画的动画数据。它是一个简单的“单元”运动片段,例如(“空闲”、“行走”或“奔跑”的一个特定实例)。更多信息
参见术语表称为Jump Up。首先,您需要找到动画剪辑中角色开始离地的那一点,在本例中,它是在动画剪辑中归一化时间为 14.1% 或 0.141 的位置
您还需要找到动画剪辑中角色即将着陆的那一点,在本例中,它是在 78.0% 或 0.78 的位置。
有了这些信息,您可以创建一个调用MatchTarget的脚本,您可以将其附加到模型上
using UnityEngine;
using System;
[RequireComponent(typeof(Animator))]
public class TargetCtrl : MonoBehaviour {
protected Animator animator;
//the platform object in the scene
public Transform jumpTarget = null;
void Start () {
animator = GetComponent<Animator>();
}
void Update () {
if(animator) {
if(Input.GetButton("Fire1"))
animator.MatchTarget(jumpTarget.position, jumpTarget.rotation, AvatarTarget.LeftFoot,
new MatchTargetWeightMask(Vector3.one, 1f), 0.141f, 0.78f);
}
}
}
该脚本将移动角色,使其从当前位置跳起,并用左脚落在目标位置。请记住,使用 MatchTarget 的结果通常只有在游戏玩法的正确点调用时才有意义。