unity3d 我无法对C#脚本应用“Evaluate”方法

wvmv3b1j  于 2023-02-13  发布在  C#
关注(0)|答案(1)|浏览(206)

我正在为我的学习项目写一个脚本,这是一个3D火球手机游戏副本。
我的任务是实现一个球从障碍物弹回的机制。有更简单的方法,但是,不幸的是,我必须使用附件中的一个。当我尝试使用方法Evaluate时,我有这样的日志
1在JB附加条款中为:
无法解析符号"Evaluate"
1.在统一中它是:
资源\脚本\物理\定向反弹. cs(56,48):错误CS1061:"Animation"不包含"Evaluate"的定义,并且找不到接受"Animation"类型的第一个参数的可访问扩展方法"Evaluate"(是否缺少using指令或程序集引用?)

using System.Collections;
using Coroutines;
using Structures;
using UnityEngine;

namespace Physics
{
    [System.Serializable]
    public class DirectionalBouncePreferences
    {
        public float Duration;
        public float Height;
        public Animation Trajectory;

        public DirectionalBouncePreferences(float duration, float height, Animation trajectory)
        {
            Duration = duration;
            Height = height;
            Trajectory = trajectory;
        }
    }

    public class DirectionalBounce
    {
        private readonly Transform _bouncer;
        private CoroutineExecutor _coroutineExecutor;
        private readonly DirectionalBouncePreferences _preferences;

        public DirectionalBounce(Transform bouncer, CoroutineExecutor coroutineExecutor, DirectionalBouncePreferences preferences)
        {
            _bouncer = bouncer;
            _coroutineExecutor = coroutineExecutor;
            _preferences = preferences;
        }

        public void BounceTo(Vector3 target, Vector3 startPosition) =>
            _coroutineExecutor.Start(InerpolatePositionTo(target, startPosition));

        private IEnumerator InerpolatePositionTo(Vector3 target, Vector3 startPosition)
        {
            var timer = new UnityTimer();
            timer.Start(_preferences.Duration);

            while (timer.IsTimeUp == false)
            {
                float t = timer.ElapsedTimePercent;
                Vector3 newPosition = CalculatePosition(target, startPosition, t);
                _bouncer.transform.position = newPosition;
                yield return null;
            }
        }

        private Vector3 CalculatePosition(Vector3 target, Vector3 startPosition, float t)
        {
            return Vector3.Lerp(startPosition, target, t) +
                   Vector3.up * _preferences.Trajectory.Evaluate(t) *
    _preferences.Height;
        }
    }
}
[enter image description here][1]
mfpqipee

mfpqipee1#

问题似乎是您在Animation类的示例上调用了名为Evaluate的方法,而Animation类没有名为Evaluate的方法。
只是猜测,但也许您正在寻找AnimationCurve.Evaluate

相关问题