User Tools

Site Tools


zh_cn:tutorial:entity

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
zh_cn:tutorial:entity [2023/01/15 01:18] – [创建模型和贴图] solidblockzh_cn:tutorial:entity [2023/01/15 01:22] – [生成你的实体] solidblock
Line 103: Line 103:
 ===== 注册实体的渲染器 ===== ===== 注册实体的渲染器 =====
  
-最后一个需要注册的是实体的**渲染器**。渲染器一般通过提供模型来决定实体的 *外观*。 +最后一个需要注册的是实体的**渲染器**。渲染器一般通过提供模型来决定实体的 //外观//。 
-''MobEntityRenderer'' 是生物实体最好的选择。继承这个类需要重写一个用于提供贴图的方法,和三个用于父类构造的参数: +''MobEntityRenderer'' 是生物实体最好的选择。继承这个类需要重写一个用于提供纹理的方法,和三个用于父类构造的参数: 
-  * ''EntityRenderDispatcher'' 一个EntityRenderDispatcher对象+  * ''EntityRenderDispatcher'' 实例
   * ''Model'' 实体的模型   * ''Model'' 实体的模型
   * 实体阴影的大小,''float''类型   * 实体阴影的大小,''float''类型
    
-下面的代码展示了一个简单的实体渲染器,它的阴影大小是0.5f, 贴图的路径为 ''resources/assets/entitytesting/textures/entity/cube/cube.png''. +下面的代码展示了一个简单的实体渲染器,阴影大小是 0.5f,纹理的路径为 ''resources/assets/entitytesting/textures/entity/cube/cube.png'' 
-注意:用到的贴图和模型将在下一步创建。+注意:用到的纹理和模型将在下一步创建。
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
 /* /*
-    * 一个用来提供模型、阴影大小和贴图的渲染器+    * 一个用来提供模型、阴影大小和纹理的渲染器
     */     */
 public class CubeEntityRenderer extends MobEntityRenderer<CubeEntity, CubeEntityModel> { public class CubeEntityRenderer extends MobEntityRenderer<CubeEntity, CubeEntityModel> {
Line 137: Line 137:
     public void onInitializeClient() {     public void onInitializeClient() {
         /*         /*
-            * 方块实体渲染器的注册,提供模型、阴影大小和贴图的渲染器。 +         * 方块实体渲染器的注册,提供模型、阴影大小和纹理的渲染器。 
-            +         
-            * 实体渲染器也可以在实体基于上下文进行渲染前(EndermanEntityRenderer#render). 操作模型。 +         * 实体渲染器也可以在实体基于上下文进行渲染前(EndermanEntityRenderer#render). 操作模型。 
-            */+         */
         EntityRendererRegistry.INSTANCE.register(EntityTesting.CUBE, (dispatcher, context) -> {         EntityRendererRegistry.INSTANCE.register(EntityTesting.CUBE, (dispatcher, context) -> {
             return new CubeEntityRenderer(dispatcher);             return new CubeEntityRenderer(dispatcher);
Line 150: Line 150:
 ===== 创建模型和纹理 ===== ===== 创建模型和纹理 =====
  
-完成实体创建的最后一步是创建模型和贴图。模型定义了实体的//结构// ,而纹理提供了实体的颜色。+完成实体创建的最后一步是创建模型和纹理。模型定义了实体的//结构// ,而纹理提供了实体的颜色。
  
 标准的模型在类的顶部提供并在构造方法中初始化“部位(parts)”,即 ''ModelPart'' 对象,在构造方法中实例化,在 ''getTexturedModelData'' 方法中获得数据,然后在 ''render'' 方法中渲染它们。注意 ''setAngles'' 和 ''render'' 是 ''EntityModel'' 类的抽象方法,必须重写。 标准的模型在类的顶部提供并在构造方法中初始化“部位(parts)”,即 ''ModelPart'' 对象,在构造方法中实例化,在 ''getTexturedModelData'' 方法中获得数据,然后在 ''render'' 方法中渲染它们。注意 ''setAngles'' 和 ''render'' 是 ''EntityModel'' 类的抽象方法,必须重写。
Line 227: Line 227:
  
 ===== 生成你的实体 ===== ===== 生成你的实体 =====
 +记得将客户端入口点添加到 fabric.mod.json 中,像这样:
 +<code json>
  
-你可以在游戏内使用 ''/summon entitytesting:cube'' 来生成你的实体,按下F3+b可以查看它的碰撞体积:+  "entrypoints":
 +    "main":
 +      "mod.fabricmc.entitytesting.EntityTesting" 
 +    ], 
 +    "client":
 +      "mod.fabricmc.entitytesting.EntityTestingClient" 
 +    ] 
 +  }, 
 +</code> 
 + 
 +你可以在游戏内使用 ''/summon entitytesting:cube'' 来生成你的实体,按下 F3+b 可以查看它的碰撞体积:
 {{https://i.imgur.com/MmQvluB.png}} {{https://i.imgur.com/MmQvluB.png}}
  
 +**注意:**如果你的实体没有继承 ''LivingEntity'',你需要创建你自己的封包处理器。你可以通过网络 API 来完成,也可以对 ''ClientPlayNetworkHandler#onEntitySpawn'' 使用 mixin。
zh_cn/tutorial/entity.txt · Last modified: 2023/01/15 01:23 by solidblock