Table of Contents

Robot(机器人) API

此API封装了机器人组件的功能,允许与机器人实现更直观的互动。

若你在Lua代码中这样写,那么你调用的就是此API:

snippet.lua
local robot_api = require("robot")
robot_api.forward()

与之相对的是通过组件接口,直接使用机器人组件API:

snippet.lua
local component = require("component")
local robot_component_api = component.robot -- 如果你使用OpenOS那么可以这么写,否则要写 component.proxy(component.list("robot")())
robot_component_api.move(sides.front)

虽然机器人组件提供了更通用的功能,比如move([side: number])drop([side: number]),但是此API提供了更直观、更安全的函数,比如turnRightdropDownforward。使用哪一种由你自己决定,甚至可以混用二者。

请注意机器人本身就是一台OC模组的电脑,和其它电脑一样,只是多了一个机器人组件,所以一般的API仍然可用。

查看方块:机器人以获取更多有关机器人本身的信息。

槽位排列

内部与外部槽位排列的区别

机器人自带物品栏的内部视图与外部视图槽位索引号不同。

机器人与其自身物品栏交互时使用内部视图。访问其他机器人的物品栏时使用外部视图。

这种区别是为了分开两种物品栏空间:主物品栏和工具带物品栏。在内部视图下,机器人只能选定主物品栏的槽位,不能选定工具带槽位,但是可以装备(equip函数)或卸下工具带中的物品。在外部视图下,观察者只会与单个物品栏交互,其中同时包含了工具带和主物品栏二者。

内部视图槽位排列

机器人的GUI中显示了机器人的物品栏槽位,编号从左上到右下排列。例如,编号为1的槽位显示在左上角,编号为2的槽位紧挨着它在其右侧,第二行的第一个槽位为编号5。

这些槽位编号是机器人与自身交互时使用的(在内部视图下用于自身的主物品栏 )。

机器人有多少可用槽位依其配置而定。若在调用某函数时指定的槽位号超出了机器人的槽位总数,将会报错。

这些槽位编号代表了内部视角下的机器人物品栏,因此机器人可以使用这些槽位编号对其主物品栏中的物品进行select(选定)、place(放置)、drop(丢弃)compare(比较)等操作。

机器人物品栏的外部视图

对外部观察者而言,机器人物品栏的编号会偏移4。对外部观察者,1至4槽位代表机器人工具带的槽位。主物品栏的第一个槽位在机器人内部(内部视图下)为1,但是对外部观察者而言是5。这么做确实感觉有些混乱,但是这么设计是为了:对外部观察者而言,[槽位1]永远代指第一个工具带槽位,[槽位5]永远代指第一个主物品栏槽位,无论机器人的物品栏大小如何。

机器人的物品栏对外界观察者而言是有方向区分的。机器人不会将其全部物品栏开放给全部方向。但是槽位编号不会随方向而变化。因此槽位1永远代指工具带的第一个槽位,哪怕在无法访问的面上也是如此。

  • 机器人的左侧不开放任何槽位。
  • 机器人的右侧仅开放工具带槽位(1-5)。
  • 机器人的其余所有面仅开放主物品栏槽位(5-n)。

移动

机器人能够灵活移动,但你可能会想了解一些细节。

悬停

机器人有飞行高度限制。机器人移动的基本规则是这样的:

违反这些规则会导致机器人返回impossible move错误。

你可以安装悬浮升级以提升(1级)乃至很大程度上规避(2级)这个限制。或者你也可以在模组配置文件中禁用这个限制,只要将limitFlightHeight设置为256或更高即可。

来源(英文)

API 特有方法

目录