我在导弹类的很多函数中都使用了这个模式:
class Missile
{
Vector2 position;
public void Launch(Vector2 towards)
{
Launch(Geom.AngleBetween(position, towards));
}
public void Launch(float angle)
{
... DO THE THING
}
}
这让我写了很多函数2次,我想知道是否有办法用某种自定义运算符编写它们一次?类似的东西:
public virtual void LaunchTowards(Direction dir)
{
... DO THE THING
}
使用Direction是一个具有自定义运算符强制转换的类,可以自动将Vector2(朝向点)或浮点(角度)转换为浮点(角度)。问题是自定义操作符必须在C#中是静态的,因此我似乎无法使用从一个点转换为一个角度所需的位置变量。
答案 0 :(得分:0)
不应将向量转换为浮点数,反之亦然,您应该使Direction
成为角度的包装器,并允许从float到Direction
和Vector2
到{{的隐式转换1}}。
Direction