目标匹配
在游戏中,常常会出现这样一种情形,角色必须在某个时间以一只手或脚停留在某个位置的方式移动。例如,角色可能需要跳过踏脚石或者跳起抓住头顶横梁。
可使用 Animator.MatchTarget 功能处理这种情况。例如,您希望设计一种情况(角色跳到平台上),且已针对该情况制作了名为跳起来 (Jump Up) 的动画片段。为此,请遵循以下步骤。
·在动画片段中找到角色开始离开地面的位置,请注意,在本例中,按标准化时间计算,动画片段中的位置值是 14.1% 或 0.141。
·在动画片段中找到角色双脚将要落地的位置,请注意,在本例中,值为 78.0% 或 0.78。
·创建一个将调用 MatchTarget 的脚本 (TargetCtrl.cs),如下所示:
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);
}
}
}
将该脚本附加到 Mecanim 模型。
脚本将移动角色,这样角色就会从当前位置跳起,然后用左脚落在目标位置。请记住,使用 MatchTarget 的结果通常只在它在游戏中的正确点被调用时才有意义。