## 内置方法
Ship类的主要便捷之处就在于内置了很多算法比较复杂的方法。
### 静态方法
静态方法是在方法名中加了static关键字修饰的方法,例如:public static Vector3D HitPointCaculate()
静编写原则是:
>[danger] 在静态方法中,不使用this关键字来访问类中的任何成员属性。
>这就表示静态方法是独立的,它的作用通常是用于纯数学计算或其他辅助运算。
在Ship类中,静态方法都位于Ship类的底部,并编写了开始标识和详细注释。
### 非静态方法
非静态方法通常都会调用Ship类里的内置变量来完成一些功能,例如:public Target ScanPoint()
### 方法列表
所有的方法在Ship类的代码中都进行了分类放置,并编写了注释,这里仅提供方法列表和大致说明,具体情况请移步代码中查看。
```
// ---- 非静态方法 ----
public Target ScanPoint(Vector3D Point) //摄像头搜索目标点
public Target PulseScanSingle(List<Vector3D> Points, long EntityId = 0) //摄像头对多个坐标点脉冲扫描(碰到传入的目标后就中断并返回该目标)
public List<Target> PulseScanMultiple(List<Vector3D> Points) //摄像头对多个坐标点脉冲扫描(必定执行完扫描并返回目标列表)
public Target TrackTarget(Target Tgt) //摄像头追踪目标
public void MotionInit() //初始化动作方块
public void UpdatePhysical() //更新飞船物理信息(这个方法必须在每一帧都调用一次,更新内容包括坐标、速度、加速度、半径。)
public bool AimAtPosition(Vector3D TargetPos) //使用PID算法控制陀螺仪瞄准某个坐标点
public bool NavigationTo(Vector3D Pos, Vector3D TargetVelocity = new Vector3D()) //使用加速度反馈算法导航到某个坐标点
public void TurnBlocksOnOff(List<IMyTerminalBlock> B, bool o) //开关方块(有多个重载,可传入多种类型方块)
public void SetThrustOverride(string Direction, double Value) //根据方向设置推进器越级值
public void SetGyroOverride(bool bOverride) //开关陀螺仪越级
public void SetGyroValue(double Y, double P, double R) //根据方向设置陀螺仪越级(有一个重载用法)
public void WeaponsShoot() //让所有武器射击一次
// ---- 静态方法 ----
public static string GetOneInfo(string CustomData, string Title, string ArgName) //按FCS8.0通讯标准获取一条指令的值
public static Vector3D HitPointCaculate() //传入多个参数,计算弹道碰撞点(FCS预瞄算法的核心)
public static List<IMyCameraBlock> GetCanScanCameras(List<IMyCameraBlock> Cams, Vector3D Point) //计算可扫描某个坐标点的摄像头
public static Vector3D CaculateVerticalVector(Vector3D Vector, Vector3D Point) //计算某个矢量的垂直矢量
```
- 序言
- 写在前面的话
- 太空工程师
- MEA小组
- 一、入门
- 1.1 基础概念
- 1.2 编程工具
- 1.3 变量
- 1.4 函数 Function
- 1.5 基本语法
- 1.5.1 运算符
- 1.5.2 if
- 1.5.3 for
- 1.5.4 其他语法
- 1.3 类 Class
- 二、编程块
- 2.1 方块的概念
- 2.2 List<T>结构
- 2.3 获取方块
- 2.4 方块的使用
- 三、Ship 类
- 3.1 简介
- Ship v0.5
- 代码
- 手册(待更新)
- 例子(待更新)
- Ship v1.0
- 代码
- 例子
- 文档
- 实例化
- 内置变量
- 内置方法
- Target类
- 四、运动控制算法在SE中的应用
- 4.1 运动控制介绍
- 4.2 过程控制
- 4.3 震荡和动态误差
- 4.4 误差累加方案
- 4.5 PID算法
- 4.6 对PID算法的一点点简化
- 4.7 一阶惯性系统的PID算法优化的研究
- 五、MEA方块类
- 5.0 核心代码目录
- v1.0核心代码
- v1.1 核心代码
- v2.0 核心代码
- 5.1 类的概念
- 5.2 MEA的方块类(Block)
- 5.3 方块类文档
- 5.4 方块类2.0 全教程
- 5.4.1 安装和使用
- 5.4.2 方块类(Block)
- 5.4.3 显示屏类(DisplayScreen)
- 5.4.4 LCD类(LCD)
- 5.4.5 主控座椅类(Cockpit)
- 六、疯猴的编程笔记
- 第一个程序
- 获取和控制其他块
- 物流与生产
- 界面与通信
- 运动与姿态
- 侦测与导航
- 七、SteamZhou的笔记
- 有趣而花里胡哨的IDEA
- 八、质子对撞炮的笔记
- 属性 Property
- 接口 interface
