如何向 MiniScript 中的所有数字添加新函数?

问题描述 投票:0回答:1

在 Miniscript 中,当使用 Sprites 时,我发现我必须将弧度转换为度数,并将度数转换为弧度。在大多数示例中,人们将其视为

varDegrees*pi/180
varRadians*180/pi
。很好,但感觉很冗长,我必须记住哪个是哪个,如果还有其他数学,我必须确保我不会弄乱它。

我知道我可以在我的脚本中放置一个“rad”函数,并执行

rad(varDegrees)
,但我想要一个更加面向对象的解决方案,不会扰乱我的点链的外观。

那么,如何添加“rad”和“deg”函数,使其适用于任何数字变量?例如,我可以通过

MySprite.rotation.rad.sin
来获取精灵旋转角度的 sin 吗?

function class oop extend dot
1个回答
0
投票

您可以向“数字”原型图添加功能。该函数可用于任何数字变量。请注意,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
© www.soinside.com 2019 - 2024. All rights reserved.