返回介绍

目标匹配

发布于 2021-06-19 18:03:20 字数 1425 浏览 970 评论 0 收藏 0

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

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

(返回 Mecanim 简介

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文