包含此页的版本:
不含此页的版本:
在游戏中,经常会出现这样的情况:角色必须以这样的方式移动,即手或脚在特定时间落在某个位置。例如,角色可能需要跳过垫脚石或跳跃并抓住头顶横梁。
可以使用 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 的结果通常只有在游戏中的正确点调用时才有意义。