我的目标是进行单次碰撞检测,以降低与特定时间内碰撞的物体的移动速度。
到目前为止我尝试了什么:
{{1}}
所以我想要发生的事情: 如果发生碰撞,则调用Slow-function并使其自行调用,直到持续时间为0.
答案 0 :(得分:4)
注意,这里的关键是
你只需要打电话给老板的另一个对象'宾语。不要将实际的buff / unbuff代码放在你的老板的面前。宾语。只是"呼唤一个buff"。
换句话说:总是在你正在抛光/不缓冲的东西上有buff / unbuff代码。
真的那么简单。
buff / unbuff很简单:
OnCollision()
{
other.GetComponent<SlowDown>().SlowForFiveSeconds();
}
关于你要减速的物体......
SlowDown()
{
void SlowForFiveSeconds()
{
speed = slow speed;
Invoke("NormalSpeed", 5f);
}
void NormalSpeed()
{
speed = normal speed;
}
}
如果你想慢慢放慢它的速度。 - 不要。在电子游戏中无法注意到这一点。
从理论上讲,如果你真的想要慢慢减慢它的速度,那么......
SlowDown()
{
void SlowlySlowForFiveSeconds()
{
InvokeRepeating("SlowSteps", 0f, .5f);
Invoke("NormalSpeed", 5f);
}
void SlowSteps()
{
speed = speed * .9f;
}
void NormalSpeed()
{
CancelInvoke("SlowSteps");
speed = normal speed;
}
}
就这么简单。