Appearance
外观
属性
mesh
实体形状数据(mesh)的hash。如果设为空字符串/'',则实体无mesh。 除非实体为玩家,否则设定实体
只有提前在场景中放置模型,才能获得模型的Mesh属性。
模型被放置后,会自动保存在文件列表中。模型文件对应的 'mesh/*.vb' 名称便是 mesh属性。
点击查看示例代码
javascript
/* 玩家进入游戏时,变成一颗星星。5秒后恢复。 */
world.onPlayerJoin(async({ entity }) => {
const originPlayerMesh = entity.mesh; // 需要先在场景摆放一个名字为 星星 的模型
entity.mesh = world.querySelector('#星星').mesh
entity.meshScale = new GameVector3(1/24, 1/24, 1/24);
entity.meshOrientation = new GameQuaternion(0, 1, 0, 0)
entity.player.invisible = true; await sleep(5000)
entity.mesh = originPlayerMesh
entity.player.invisible = false;
});
position
实体的位置。
点击查看示例代码
javascript
//随机摆放所有东西的位置
world.querySelectorAll('*').forEach((e) => {
e.position.set(new GameVector3(
Math.random()*10,
10+Math.random()*10,
Math.random()*10);
}));
anchorOffset
实体几何中心与锚点的偏移量
meshOrientation
实体的旋转角度。
meshScale
实体的缩放比例。
meshColor
实体的颜色。
meshInvisible
默认值:false
可控制实体隐形,当值设为true时,则实体隐形。
meshEmissive
默认值:0
实体的发光度。
meshMetalness
默认值:0
实体的金属感。
meshShininess
默认值:0
范围:0-1
实体的反光度,设为1则为非常光滑。
meshOffset
默认值:GameVector3(0, 0, 0)
实体的位移。
showEntityName
默认值:false
如果为真,则展示实体的默认名称。
如果通过customName
自定义了需要展示的名称,则展示customName
。
customName
默认值:''
允许自定义需要展示的名称,默认为空。
nameRadius
默认值:16
名称展示范围,数值越小,则需要靠近实体才会出现名称。
nameColor
默认值:new GameRGBColor(1, 1, 1)
进入实体名称展示范围时,实体名称的颜色。
点击查看示例代码
展示实体名称之前,在场景中必须先有一个实体。
在模型列表中,挑选一个你喜欢的模型,将它放置在场景中,并记住模型的名字。
javascript
// 先在场景中放置一个名称为 NPC 的实体。
const npc = world.querySelector('#NPC');
npc.showEntityName = true; // 允许展示实体名称
npc.nameRadius = 16; // 实体名称的展示范围
npc.nameColor = new GameRGBColor(1,0,1); // 互动提示的文字颜色
// 此时没有通过 customName 自定义展示的名称,customName 为空字符串
// 因此展示的实体名称为实体的默认名称 —— “NPC”
// 如果通过 customName 指定自定义的名称, 则会展示 customName
npc.customName = "Miss Miao"; // 显示自定义的名称
方法
lookAt()
将实体旋转至面向指定位置的方向。
通过此方法进行的旋转会瞬时发生,仅影响实体的朝向,不会影响实体的运动状态。
输入参数
参数 | 必填 | 默认值 | 类型 | 说明 |
---|---|---|---|---|
targetPosition | 是 | GameVector3 | 世界坐标,希望让实体朝向的位置 | |
meshFacing | Z | "X" | "Y" | "Z" | 定义模型在未旋转状态下的参考方向,处理模型设计时未朝向Z轴时的情况: - 当取X、Z时,定义模型的正方向分别为X、Z轴正方向,上方向为 Y 轴正方向 - 当取Y时,定义模型的正方向为Y轴正方向,上方向为Z轴正方向 - 默认值为Z,即模型设计时朝向Z轴正方向 | |
up | GameVector3 | 上向量,默认取 Y 轴正方向 |
rotateLocal()
围绕模型自身坐标系下的某个点进行旋转
输入参数
参数 | 必填 | 默认值 | 类型 | 说明 |
---|---|---|---|---|
localPosition | 是 | GameVector3 | 自身坐标系中的位置向量,表示待旋转的点 | |
axis | 是 | Z | "X" | "Y" | "Z" | 指定旋转轴 |
rad | 是 | number | 旋转的角度,以弧度为单位 |
scaleLocal()
参照模型自身坐标系下的某个点进行缩放
输入参数
参数 | 必填 | 默认值 | 类型 | 说明 |
---|---|---|---|---|
localPosition | 是 | GameVector3 | 自身坐标系中的位置向量,表示待缩放的点 | |
v | 是 | GameVector3 | 缩放向量,表示在x、y、z轴上的缩放因子 |
点击查看示例代码
javascript
const modelScale = world.querySelector('#New-model-s');
const modelRotation = world.querySelector('#New-model-r');
if (modelScale) {
modelScale.showEntityName = true;
modelScale.enableInteract = true;
modelScale.onInteract(() => {
// 以外观框中心为原点进行缩放
modelScale.scaleLocal(modelScale.anchorOffset.scale(-1), new GameVector3(0.2, 0.1, 0.3));
});
}
if (modelRotation) {
modelRotation.showEntityName = true;
modelRotation.enableInteract = true;
modelRotation.onInteract(() => {
// 以外观框中心为原点进行旋转
modelRotation.rotateLocal(modelRotation.anchorOffset.scale(-1), 'X', 30 * Math.PI / 180);
});
}