为了账号安全,请及时绑定邮箱和手机立即绑定

为什么靠近特定物体(目标)时角色从不减速?

为什么靠近特定物体(目标)时角色从不减速?

C#
料青山看我应如是 2022-06-12 16:22:49
我有一个带有此脚本的空游戏对象:using System.Collections;using System.Collections.Generic;using UnityEngine;public class AnimatorController : MonoBehaviour{    public Animator[] animators;    public Transform target;    public float speed = 1f;    float sp = 0f;    // Use this for initialization    void Start ()    {        for(int i = 0; i < animators.Length; i++)        {            animators[i].SetFloat("Walking Speed", speed);        }    }    // Update is called once per frame    void Update ()    {        if((animators[2].transform.position - target.position).sqrMagnitude < 3)        {            sp += Time.deltaTime;            sp = Mathf.Clamp(sp, 0f, 1f);            animators[1].SetFloat("Walking Speed", sp);            animators[2].SetFloat("Walking Speed", sp);        }    }}我有 3 个角色,每个角色都有一个动画控制器。每个动画师都有一个新的状态名称与 Humanoid walk 一起行走。每个动画师都有一个浮动参数名称,在每个动画师中将其设置为 1.0在检查器中,我为每个动画师状态添加了参数步行速度。但是接近目标时,3个角色永远不会减速。在屏幕截图中,每个士兵都有:Space_Soldier_A (4) 和 Space_Soldier_A (5) 具有相同的动画控制器和步行速度参数。medea_m_arrebola 有它自己的动画控制器,还带有步行速度浮动参数。与士兵的设置相同。所有角色都在行走,但在接近目标时他们从不减速。
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

所以这就像我将如何解决这个问题,以我知道的最简单的方式。您必须添加自己的逻辑来处理您希望它们如何完全停止。(速度 < .01f => 停止时的 IE),但这应该让你非常接近。


            public void Update()

    {

        float distanceFromTarget = Vector3.Distance(transform.position, target.position);

        if ( distanceFromTarget < slowDownDistance)

        {

            float speed = (distanceFromTarget / slowDownDistance)/1;

        }

    }


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信