我正在尝试为使用 C# 制作的游戏元素添加反弹效果。我似乎无法为此找到正确的缓动方程。这是我暂时使用的:
t.position += (destination-t.position)*0.05f;
if((destination-t.position).magnitude <= 0.01f)
{
t.position = destination;
}
谁能帮我把它改成一个弹跳方程?
我正在尝试为使用 C# 制作的游戏元素添加反弹效果。我似乎无法为此找到正确的缓动方程。这是我暂时使用的:
t.position += (destination-t.position)*0.05f;
if((destination-t.position).magnitude <= 0.01f)
{
t.position = destination;
}
谁能帮我把它改成一个弹跳方程?
if(setUpEase)
{
// Set the destination of each boardspace
if(!oneTime)
{
beginning = new Vector3(t.position.x, t.position.y, t.position.z);
destination = new Vector3(t.position.x, t.position.y-10, t.position.z);
change = new Vector3(0, -10, 0);
setUpDuration = Random.Range (1.0f, 3.0f);
oneTime = true;
}
// BOUNCING
currentTime += Time.deltaTime;
float t2 = currentTime/setUpDuration;
if(currentTime < setUpDuration)
{
if (t2 < (1/2.75f))
{
t.position = change*(7.5625f*t2*t2) + beginning;
}
else if (t2 < (2/2.75f))
{
t.position = change*(7.5625f*(t2-=(1.5f/2.75f))*t2 + 0.75f) + beginning;
}
else if (t2 < (2.5f/2.75f))
{
t.position = change*(7.5625f*(t2-=(2.25f/2.75f))*t2 + 0.9375f) + beginning;
}
else
{
t.position = change*(7.5625f*(t2-=(2.625f/2.75f))*t2 + 0.984375f) + beginning;
}
}
else
{
t.position = destination;
if(boardId < 113 && boardId > 92)
pie.setUpEase2 = true;
setUpEase=false;
}
}