zh
menu PN X 第四章 运动控制器 - 处理实体运动的核心
more_vert
切换语言
  1. PowerNukkitX
  2. 快速入门
  3. 服务器配置

    1. server.properties
    2. nukkit.yml
    3. pnx-cli-config.ini
    4. 反矿透
    5. 资源包加密
    6. 硬件加速压缩
    7. 使用WaterDogPE
    8. 超平坦世界
  4. FAQ

    1. 新人必看
    2. PNX-CLI教程
    3. 常见问题
    4. Terra问题
    5. 重生点问题
    6. 转换地图
  5. 开发者文档

    1. Java

      1. 跳转到JavaDoc
      2. Mod API

        1. 自定义方块
        2. 自定义物品
        3. 自定义实体
        4. 自定义附魔
      3. 生物AI

        1. 行为
        2. 记忆
        3. 传感器
        4. 运动控制器
        5. 寻路器
        6. 行为组
        7. 工作周期
    2. JavaScript

      1. 配置开发环境
      2. 基于LLSELib开发
      3. Hello World
      4. 基本知识
      5. 事件监听
      6. 常见开发问题
    3. API

      1. 简介
      2. 通用API
      3. Git-API
      4. 下载API
      5. 延迟返回API
      6. 插件API
    4. 实用资源

      1. 事件对照表
      2. 物品方块ID

第四章 运动控制器 - 处理实体运动的核心

author: daoge_cmd

1.0 控制实体运动

运动控制器是用来控制实体的行为的,比如移动、跳跃、攻击等等的具体实现。

对于不同实体,可以提供不同的控制器,以实现上述行为的特殊实现。

1.1 工作流程

控制器非常简单,其接口只有一个方法:

image-20221215150633863

control方法每gt会被调用一次,处理实体移动

1.2 通过操作记忆控制控制器

控制器通过读取特定的memory完成工作

拿羊举例,其使用的两个控制器LookController,WalkController使用到了以下的几个memory:

MemoryType<Vector3> LOOK_TARGET = new MemoryType<>("minecraft:look_target");
MemoryType<Vector3> MOVE_TARGET = new MemoryType<>("minecraft:move_target");
MemoryType<Vector3> MOVE_DIRECTION_START = new MemoryType<>("minecraft:move_direction_start");
MemoryType<Vector3> MOVE_DIRECTION_END = new MemoryType<>("minecraft:move_direction_end");
MemoryType<Boolean> SHOULD_UPDATE_MOVE_DIRECTION = new MemoryType<>("minecraft:should_update_move_direction", false);
MemoryType<Boolean> ENABLE_PITCH = new MemoryType<>("minecraft:enable_pitch", true);

1.3 介绍:默认的几个控制器

核心已经自带了几个控制器,在大多数情况下,你可以直接拿来使用:


© PowerNukkitX 开发组