目标匹配

在游戏中,常常会出现这样一种情形,角色必须在某个时间以一只手或脚停留在某个位置的方式移动。例如,角色可能需要跳过踏脚石或者跳起抓住头顶横梁。

可使用 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 的结果通常只在它在游戏中的正确点被调用时才有意义。