有没有什么方法可以让LineRenderer的SetPosition更平滑。我在做一个2D游戏,我在做一个变色龙的舌头,它从嘴里弹出来到一个点,然后又回来,但是这会让动画非常快,有没有什么方法可以让它更慢更平滑?
我的问题是有没有一种方法可以平滑linerenderer的setposition?就像我在我的脚本中所做的那样。
EdgeCollider2D edgeCollider;
LineRenderer myLine;
public Transform pointOne;
public Transform pointfinalZero;
public Transform pointfinal;
public bool isTongue;
void Start()
{
edgeCollider = this.GetComponent<EdgeCollider2D>();
myLine = this.GetComponent<LineRenderer>();
}
void Update()
{
SetEdgeCollider(myLine);
myLine.SetPosition(0, pointOne.position);
if(isTongue)
{
myLine.SetPosition(1, pointfinal.position);
}
if(!isTongue)
{
myLine.SetPosition(1, pointfinalZero.position);
}
}
void SetEdgeCollider(LineRenderer lineRenderer)
{
List<Vector2> edges = new List<Vector2>();
for(int point = 0; point<lineRenderer.positionCount; point++)
{
Vector3 lineRendererPoint = lineRenderer.GetPosition(point);
edges.Add(new Vector2(lineRendererPoint.x, lineRendererPoint.y));
}
edgeCollider.SetPoints(edges);
}
它工作正常,但我想让它更光滑,看到舌头伸出。
2条答案
按热度按时间f87krz0w1#
在Unity中平滑移动到目标点
ejk8hzay2#
你可以使用各种各样的Tween库,但是我更喜欢准系统的协程。
时间跨度是设置动画所需的秒数。
[ExecuteAlways]用于编辑器中的测试。与ContextMenu(“StickTongueOut”)相同]您可以在检查器中右键单击脚本来运行动画。
在OnEnabled中初始化tongue变量,因为在程序集热重新加载后,OnEnabled被触发并重新初始化它的值,这样你就可以编写在播放时编辑脚本后仍然有效的代码。不是必须的,但是哦,多么方便啊。
如果您需要EaseInOut,您可以在改变方向之前重新Mapt,如下所示:
此实用程序允许您执行此操作
如果你的项目中有这样的没有命名空间的实用程序,你会遇到冲突。最好使用命名空间。