### 说明
Cockpit类直接表示游戏中驾驶舱(大、小)、飞行控制座椅(大、小)方块。
由于K社更新,主控座椅都有了自己的显示屏,所以本类也支持直接操作主控座椅上的所有显示屏。
Cockpit.Screens这个属性直接可以访问到主控座椅上的所有显示屏,它们的类型是DisplayScreen。
### 快速上手
```
MEA.Cockpit cp = new MEA.Cockpit("Cockpit");
foreach(MEA.DisplayScreen screen in cp.Screens){
screen.ContentType = VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE; //切换显示屏显示内容为文字或图像
screen.Text = "我是屏幕" + cp.Screens.IndexOf(screen); //设置显示屏文字为"显示哈哈i";
}
cp.Screens[0].Text = "我是主屏"; //设置第0个屏幕显示文字为"我是主屏"
```
### 继承
继承自 Block 类
依赖 DisplayScreen 类
### 构造方法
```
// 空方块
MEA.Cockpit cp = new MEA.Cockpit();
// 此时cp只是一个空的方块,原则上是不能使用的,唯一正常的方法是 cp.IsOK 属性将 = false
//直接通过名字获取
MEA.Cockpit cp = new MEA.Cockpit("Cockpit");
//这会严格匹配名字,当存在多个同名方块时,随机获取其中一个。
//当找不到方块时,初始化失败。可以通过cp.IsOK判断是否获取成功。
//如果不成功的情况下,继续访问cp的其他属性,将会抛出异常
// 通过IMyTerminalBlock或IMyCockpit实例化
IMyCockpit block = GridTerminalSystem.GetBlockWithName("Cockpit") as IMyCockpit; //游戏原生方法
MEA.Cockpit cp = new MEA.Cockpit(block);
// 将游戏原生方块类转化为MEA方块类
```
### 属性
| 名称 | 类型 | 只读 | 含义 |
| --- | --- | --- | --- |
| _cockpit | IMyCockpit | | 对应的IMyCockpit方块实体
| Screens | List\<DisplayScreen\> | | 主控上的屏幕
| CanControlShip | bool | 是 | 是否可以控制飞船
| IsUnderControl | bool | 是 | 是否被玩家操控
| HasWheels | bool | 是 | 是否有轮子
| ControlWheels | bool | | 是否勾选控制轮子
| ControlThrusters | bool | | 是否勾选控制推进器
| HandBrake | bool | | 是否勾选手刹
| DampenersOverride | bool | | 是否勾选惯性抑制
| IsMainCockpit | bool | | 是否勾选为主控
| ShowHorizonIndicator | bool | | 是否勾选显示地平线高度
| InputKey | Vector3D | 是 | 按键输入,X表示AD,Y表示空格和C,Z表示SW,值一般为1、-1或0
| InputRoll | double | 是 | QE按键输入值,一般为1、-1或0
| InputMouse | Vector2D | 是 | 鼠标输入,X表示左右,Y表示上下,值范围不确定
| CenterOfMass | Vector3D | 是 | 质心坐标,相对世界坐标系(不考虑活塞转子等外挂部分)
| BaseMass | double | 是 | 飞船基础质量
| TotalMass | double | 是 | 飞船总体质量
| PhysicalMass | double | 是 | 飞船物理质量
| ArtificialGravity | Vector3D | 是 | 人工重力矢量
| NaturalGravity | Vector3D | 是 | 自然重力矢量
| Velocity | Vector3D | 是 | 飞船速度(m/s)
| AngleVelocity | Vector3D | 是 | 飞船角速度(弧度/s)
| YawVelocity | double | 是 | 飞船偏航Yaw速度(基于自己的坐标系,单位角度)
| PitchVelocity | double | 是 | 飞船偏航Pitch速度(基于自己的坐标系,单位角度)
| RollVelocity | double | 是 | 飞船偏航Roll速度(基于自己的坐标系,单位角度)
| IsInPlanet | bool| 是 | 是否处于星球环境
| PlanetPosition | Vector3D | 是 | 星球坐标(处于星球时才能获取到,否则是0,0,0)
| PlanetElevationSealevel | double | 是 | 所处的星球海平面高度(处于星球状态中才能获取)
| PlanetElevationSurface | double | 是 | 所处的星球地表高度(处于星球状态中才能获取)
| OxygenCapacity | double | 是 | 氧气容量
| OxygenFilledRatio | double | 是 | 氧气填充率
### 方法
无
- 序言
- 写在前面的话
- 太空工程师
- 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