我正在为我的学习项目写一个脚本,这是一个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]
1条答案
按热度按时间mfpqipee1#
问题似乎是您在
Animation
类的示例上调用了名为Evaluate
的方法,而Animation
类没有名为Evaluate
的方法。只是猜测,但也许您正在寻找
AnimationCurve.Evaluate
?