そのため、「シーン」に小さなセンサーがあり、ブロックされたときにプログラムを4秒間待機させ、センサーがまだブロックされている場合は、ユーザーに警告するようにします。
センサーがブロックされたままの場合、スクリプトは正常に機能します。
ただし、センサーを4秒未満ブロックしてから、センサーからパーツを削除すると(センサーがブロックされなくなったため、アラートは発生しません)、条件が真でなくなってもアラートは実行されます。
私がここで間違っていることを誰かが見ることができますか?
このOnBlocked()
機能は、センサーがブロックされているOnCleared()
ときに実行され、センサーがクリアされたときに実行されます。
このOnisBlockedUpdated()
関数は、isBlockedプロパティが更新されたときに実行されます。
function OnBlocked( sender : Demo3D.Visuals.PhysicsObject, load : Demo3D.Visuals.Visual )
{
sender.isBlocked = true;
sender.PropertiesUpdated();
}
function OnCleared( sender : Demo3D.Visuals.PhysicsObject, load : Demo3D.Visuals.Visual )
{
sender.isBlocked = false;
sender.PropertiesUpdated();
}
function OnisBlockedUpdated( sender : Demo3D.Visuals.BoxVisual, value : System.Boolean, oldValue )
{
var blockingObj : Demo3D.Visuals.BoxVisual = sender.BlockingLoad;
if (value)
{
print("isBlocked");
wait(4);
sender.PropertiesUpdated();
if(value)
{
alert("The object '" + blockingObj + "' is too tall for this bay.");
}
else
{
return;
}
}
if(!value)
{
print("cleared");
return;
}
}