【教程】自定义实体在ModPE中的应用(入门)

各位好,我是你们敬爱的太守霸霸
禁止反驳斜斜
那么进入正题,这次给各位带来的是自定义实体的基础教程。作为ModPE教程帝,本尊当然是要做最六六六的入门教程帝(°∀°)ノ
ModPE入门教程链接:
http://tieba.baidu.com/p/4425490997?share=9105&fr=share&see_lz=0
GUI入门教程链接:
http://tieba.baidu.com/p/5003833707?share=9105&fr=share&see_lz=0




楼主 宇智波家老大  发布于 2017-03-22 12:18:00 +0800 CST  
二楼自己占了

楼主 宇智波家老大  发布于 2017-03-22 12:18:00 +0800 CST  
▲版权声明▼
本教程由百度贴吧@氵骨G构写框架、提供剖析代码与完成大审,由@宇智波家老大进行构写、添加、补充、修改。
禁止转载与一切商业行为,违者将追究其法律责任。

▼制作者名单▲
教程制作:
@氵骨G
@宇智波家老大
==============
TXT制作:
@宇智波家老大
=============


〔最低要求〕: 熟悉自定义函数,对大部分启动器函数能灵活运用。

楼主 宇智波家老大  发布于 2017-03-22 12:19:00 +0800 CST  
part 1:
第一节我们主要说的是自定义实体的实质。

以ModPE是做不到添加一个全新的实体的。它只能通过修改生物模型(model)来实现“伪·自定义实体”。也就是说,与其叫它“自定义实体”,不如叫“自定义模型”更合适。

所以说我们明确了一个概念 :


PE版的ModPE做不到像PC版那样,添加一个新的实体。在PE只能通过修改实体的模型和皮肤,来做到伪新实体的效果。

楼主 宇智波家老大  发布于 2017-03-22 12:19:00 +0800 CST  
js里的自定义实体只能给有生命的实体使用,像射出的箭、矿车、画等等这些没有生命的实体是不可以的(如矿车、箭、掉落的方块等)。而像牛、羊、猪等实体可以。

所以综上所述,我们就可以知道,自定义实体的难点就在于建立一个模型(一般简称之为建模)。而生成实体、实体属性、血量,都是十分简单的。这些在教程的最后会提到。

楼主 宇智波家老大  发布于 2017-03-22 12:19:00 +0800 CST  
part 2:

一般建模我们会把它套在一个function里,也就是自定义一个函数。最后再以变量的形式把这个模型赋予这个变量,调用的时候只需要填变量名就能调用这个模型。

一般格式为:
function 函数名(模型名)
{
var model=模型名.getModel();
//下面就可以开始建模了
这里是模型
}
var 调用时的变量名=Renderer.createHumanoidRenderer();
函数名(调用时的变量名);

好了,接下来,我会拆分讲解上面的例子。

楼主 宇智波家老大  发布于 2017-03-22 12:20:00 +0800 CST  
首先,函数名你可以自定义。你可以把它看做一个普通的自定义函数。推荐起一个和这个实体有关联(或代表这个实体)的名称。比如说你要做一个鲸鱼,那么函数名就可以是鲸鱼。

模型名同样也可以自定义,推荐内容同上。但是要注意,函数名和模型名不能相同。

楼主 宇智波家老大  发布于 2017-03-22 12:20:00 +0800 CST  
下面就是函数体部分了。

首先,定义一个叫做“model”的变量。模型名就是上面参数里的那个模型名。

var model=模型名.getModel();

直译大概就是:

定义一个名为model的变量,将使用getmodel()函数的返回值赋值给它。相当于获取这个模型的model。

楼主 宇智波家老大  发布于 2017-03-22 12:21:00 +0800 CST  
再后面,之前有说过,就是要把这个模型赋值为一个变量,方便我们在编写js时的调用。那么:

var 调用时的变量名=Renderer.createHumanoidRenderer();

意思是创造一个新的普通人类模型(也就是玩家Steve的模型)。

然后,调用一开始的那个自定义函数,参数就填上面的那个变量。

这样,在你调用的时候,你就可以直接:

Entity.setRendererType(要换模型的实体,刚刚那个变量);

就可以了。

这就是自定义实体所用的框架。写完框架后,我们就可以开始详细构写模型了。

楼主 宇智波家老大  发布于 2017-03-22 12:21:00 +0800 CST  
part 3:
好了,下面我们就可以看看实体的基础部分了。


一般来说,我们是不需要原来的人类模型的。我们自定义的实体,大部分都不是以人类为大致框架的。所以,我们需要先清除原来的人类模型的所有模型单元。


好,这里我们就要引入一个新概念,就是模型单元。

楼主 宇智波家老大  发布于 2017-03-22 12:33:00 +0800 CST  
一个有生命的实体,都有六个模型单元:
头,身体,左臂,右臂,左腿,右腿
这六个模型单元。
我们建模都是在这六个模型单元上为基础搭建起来的框架。

比如说你要做一把剑,那么我们所建的模型就要在手臂这个模型单元上。也就是它会随着手臂的运动而运动。
可以做一个比喻,模型单元就是你的手,模型块就是你手上拿的东西。一般建模所用的就是模型块。

那么,为了方便使用,我们先把所有模型单元定义为一个变量。

楼主 宇智波家老大  发布于 2017-03-22 12:33:00 +0800 CST  
它们所对应的名称:

头:head
身体:body
左臂:leftArm
右臂:rightArm
左腿:leftLeg
右腿:rightLeg

注意,第一个单词首字母为小写,第二个单词首字母才是大写。

好,就像刚刚说的,为了方便调用,我们要把它们赋值给变量。

楼主 宇智波家老大  发布于 2017-03-22 12:34:00 +0800 CST  
var 头=model.getPart("head");

以此类推。变量名可以自定义。不过要注意的还是那个,不能和参数名、函数名重复。要获取哪个模型单元直接就用上面的那些英文放在getPart里就可以了。

要清除模型单元,那么就在你定义了对应的变量后,写上:

变量名.clear();

一般清除全身的模型单元后,就可以开始建模了。这里根据个人需要自定义。

楼主 宇智波家老大  发布于 2017-03-22 12:34:00 +0800 CST  
那么,整理代码就是:

function 滑G很废(滑G有病)
{
var model=滑G有病.getModel();
var 头=model.getPart("head");
var 身体=model.getPart("body");
var 左臂=model.getPart("leftArm");
var 右臂=model.getPart("rightArm");
var 左腿=model.getPart("leftLeg");
var 右腿=model.getPart("rightLeg");
头.clear();
身体.clear();
左臂.clear();
右臂.clear();
左腿.clear();
右腿.clear();
/*建模部分*/
}
var 滑G模型=Renderer.createHumanoidRenderer();
滑G很废(滑G模型);

楼主 宇智波家老大  发布于 2017-03-22 12:35:00 +0800 CST  
part 4:
这节我们主要讲MC中的三维立体坐标系。

首先我们需要明确一个概念,就是维度。

我们现在处于的世界是三维世界。简单的来说,就是所有的位置,都能用xyz三个坐标来确定。

大概就是说,上下为y轴,左右为x轴,前后为z轴。当然这么说是不准确的——因为没有绝对的上下左右前后。

楼主 宇智波家老大  发布于 2017-03-22 12:35:00 +0800 CST  
我想大家应该都是学过平面直角坐标系的。在一张纸上,任何一点都能用两个坐标(x,y)确定。这其实就是二维。平面直角坐标系里是没有厚度的,也就是说,二维是没有厚度的。它是无限薄的一张“纸”。

所以说三维就是在二维的基础上,增加了“厚度”这个概念。

百度百科里对三维的定义是:

通常我们说的三维是指在平面二维系中又加入了一个方向向量构成的空间系。三维既是坐标轴的三个轴,即x轴、y轴、z轴,其中x表示左右空间,y表示上下空间,z表示前后空间,这样就形成了人的视觉立体感。
三维是由和一维二维组成的,二维即只存在两个方向的交错,将一个二维和一个一维叠合在一起就得到了三维。
三维具有立体性,但我们俗语常说的前后,左右,上下都只是相对于观察的视点来说。没有绝对的前后,左右,上下。
(以上取自百度百科)

楼主 宇智波家老大  发布于 2017-03-22 12:35:00 +0800 CST  
下面这张图是一个基本的三维立方体。



以o为原点,x增向右,y增向上,z增向后。

楼主 宇智波家老大  发布于 2017-03-22 12:36:00 +0800 CST  
但是在MC的建模里,x增和Y增是相反的。也就是说:


如果这一点为20


那么15在20的上面。

楼主 宇智波家老大  发布于 2017-03-22 12:36:00 +0800 CST  
同理,25在这里。


X轴也同理:

如果这点是20


那么15在这里。

楼主 宇智波家老大  发布于 2017-03-22 12:37:00 +0800 CST  
明天第二更

楼主 宇智波家老大  发布于 2017-03-22 18:44:00 +0800 CST  

楼主:宇智波家老大

字数:3921

发表时间:2017-03-22 20:18:00 +0800 CST

更新时间:2021-04-09 00:22:08 +0800 CST

评论数:111条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看