在 Miniscript 中,当使用 Sprites 时,我发现我必须将弧度转换为度数,并将度数转换为弧度。在大多数示例中,人们将其视为
varDegrees*pi/180
和 varRadians*180/pi
。很好,但感觉很冗长,我必须记住哪个是哪个,如果还有其他数学,我必须确保我不会弄乱它。
我知道我可以在我的脚本中放置一个“rad”函数,并执行
rad(varDegrees)
,但我想要一个更加面向对象的解决方案,不会扰乱我的点链的外观。
那么,如何添加“rad”和“deg”函数,使其适用于任何数字变量?例如,我可以通过
MySprite.rotation.rad.sin
来获取精灵旋转角度的 sin 吗?
您可以向“数字”原型图添加功能。该函数可用于任何数字变量。请注意,sin() 和 cos() 函数不是数字原型的一部分,因此我们也必须添加它们,以便能够将其完全表达为点函数链。
在脚本顶部附近添加以下内容:
// convert number to radians
number.rad = function; return self*pi/180; end function
// convert number to degrees
number.deg = function; return self*180/pi; end function
// return sine of radians angle
number.sin = function; return sin(self); end function
// return cosine of radians angle
number.cos = function; return cos(self); end function
当您使用“点符号”调用此函数时,会为您创建
self
变量,正如您所要求的:
我们使用了“;”将函数定义的各个部分分开,以便我们可以将其全部放在一行中,只是为了简洁。
d = 90
print d.rad.sin // result is 1
再次注意,我们不能将它们应用于文字值,例如
90.rad.sin
。文字与 MiniScript 中的变量不同,不是对象。
使用 Sprite,我们可能会看到类似以下内容:
dx = MySprite.rotation.rad.sin
dy = MySprite.rotation.rad.cos