private Vector3 lastVelocity; // cache previous frame rb.velocity
public void Update()
{
if (rb.velocity != lastVelocity)
{
OnVeloictyChange(rb.velocity-lastVelocity);
}
lastVelocity = rb.velocity;
}
private void OnVeloictyChange(Vector3 delta)
{
// value is changed This Frame, So Event code is here
}
2条答案
按热度按时间2j4z5cfb1#
你的问题有一个非常简单的答案。每当你在代码中改变这个变量时,你可以调用change事件。事实上,一个类似于Property的函数。但是因为你的变量是
rb.velocity
,你想检查它的变化。如下所示,记录前一帧值,并在重置前与当前值进行检查。3htmauhk2#
由于这是第三个库的属性(在本例中为unity),因此您不能简单地添加一些东西来跟踪它,您可以做的是创建一个层,该层将信息传递给刚体,并在执行此操作之前或之后触发您希望的事件,这一行上的内容。然后您需要确保速度的所有变化都通过此类