用户:yee剑走天下查看:15 回复:12 评论:15 创建时间:2023-08-14T22:17:12
到底适不适应全部不知道(但是美术喵那一堆猫岛人物类的npc绝对适用!
用法:把模型拆分开一堆部件,然后命名为xxx-部位,xxx为皮肤名称。例:男装-身体、男装-左上臂等
function suit(entity, skin) {
let suitList = [
[`mesh/${skin}-身体.vb`, GameBodyPart.TORSO, Quat, 0.8, [0, 0.05, 0]],
[`mesh/${skin}-胯.vb`, GameBodyPart.HIPS, Quat, 0.8, [0, -0.25, 0]],
[`mesh/${skin}-右上臂.vb`, GameBodyPart.RIGHT_SHOULDER, Quat.rotateX(-Greed * 30), 0.8, [-0.2, 0, 0]],
[`mesh/${skin}-右下臂.vb`, GameBodyPart.RIGHT_LOWER_ARM, Quat.rotateX(-Greed * 40), 0.8, [0, 0, 0]],
[`mesh/${skin}-右手.vb`, GameBodyPart.RIGHT_HAND, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-左上臂.vb`, GameBodyPart.LEFT_SHOULDER, Quat.rotateX(Greed * 30), 0.8, [0.2, 0, 0]],
[`mesh/${skin}-左下臂.vb`, GameBodyPart.LEFT_LOWER_ARM, Quat.rotateX(Greed * 40), 0.8, [0, 0, 0]],
[`mesh/${skin}-左手.vb`, GameBodyPart.LEFT_HAND, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-右上腿.vb`, GameBodyPart.RIGHT_UPPER_LEG, Quat, 0.8, [0, -0.15, 0]],
[`mesh/${skin}-右下腿.vb`, GameBodyPart.RIGHT_LOWER_LEG, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-右脚.vb`, GameBodyPart.RIGHT_FOOT, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-左上腿.vb`, GameBodyPart.LEFT_UPPER_LEG, Quat, 0.8, [0, -0.15, 0]],
[`mesh/${skin}-左下腿.vb`, GameBodyPart.LEFT_LOWER_LEG, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-左脚.vb`, GameBodyPart.LEFT_FOOT, Quat, 0.8, [0, 0, 0]]
]
for (let i in entity.player.skinInvisible) {
entity.player.skinInvisible[i] = true;
};
for (let i of suit) {
entity.player.addWearable({
mesh: i[0],
bodyPart: i[1],
orientation: i[2],
scale: new Array(3).fill(i[3]),
offset: i[4]
})
}
}上面的代码有点小问题,以这个为准:
function suit(entity, skin) {
const Quat = new GameQuaternion(0, 0, 0, 1);
const Greed = Math.PI / 90;
const suitList = [
[`mesh/${skin}-身体.vb`, GameBodyPart.TORSO, Quat, 0.8, [0, 0.05, 0]],
[`mesh/${skin}-胯.vb`, GameBodyPart.HIPS, Quat, 0.8, [0, -0.25, 0]],
[`mesh/${skin}-右上臂.vb`, GameBodyPart.RIGHT_SHOULDER, Quat.rotateX(-Greed * 30), 0.8, [-0.2, 0, 0]],
[`mesh/${skin}-右下臂.vb`, GameBodyPart.RIGHT_LOWER_ARM, Quat.rotateX(-Greed * 40), 0.8, [0, 0, 0]],
[`mesh/${skin}-右手.vb`, GameBodyPart.RIGHT_HAND, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-左上臂.vb`, GameBodyPart.LEFT_SHOULDER, Quat.rotateX(Greed * 30), 0.8, [0.2, 0, 0]],
[`mesh/${skin}-左下臂.vb`, GameBodyPart.LEFT_LOWER_ARM, Quat.rotateX(Greed * 40), 0.8, [0, 0, 0]],
[`mesh/${skin}-左手.vb`, GameBodyPart.LEFT_HAND, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-右上腿.vb`, GameBodyPart.RIGHT_UPPER_LEG, Quat, 0.8, [0, -0.15, 0]],
[`mesh/${skin}-右下腿.vb`, GameBodyPart.RIGHT_LOWER_LEG, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-右脚.vb`, GameBodyPart.RIGHT_FOOT, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-左上腿.vb`, GameBodyPart.LEFT_UPPER_LEG, Quat, 0.8, [0, -0.15, 0]],
[`mesh/${skin}-左下腿.vb`, GameBodyPart.LEFT_LOWER_LEG, Quat, 0.8, [0, 0, 0]],
[`mesh/${skin}-左脚.vb`, GameBodyPart.LEFT_FOOT, Quat, 0.8, [0, 0, 0]]
];
entity.player.scale += 0.2;
for (let i in entity.player.skinInvisible) {
entity.player.skinInvisible[i] = true;
};
for (let i of suitList) {
entity.player.addWearable({
mesh: i[0],
bodyPart: i[1],
orientation: i[2],
scale: new Array(3).fill(i[3]),
offset: i[4]
})
}
};
附效果图一张:
点赞1
评论
小鹿UUyM这段代码是一个名为`suit`的函数,接受两个参数:`entity`和`skin`。它用于在游戏中为角色添加套装(服装)效果。
首先,函数内部定义了一些常量和变量:
- `Quat`是一个四元数对象,用于表示旋转。
- `Greed`是一个角度值,表示旋转的角度大小。
- `suitList`是一个数组,包含了不同身体部位和套装的对应关系。每个元素都是一个包含五个元素的数组,分别表示:
- `mesh`:套装的模型文件路径。
- `bodyPart`:身体部位,如`GameBodyPart.TORSO`表示躯干。
- `orientation`:旋转方向,使用`Quat`对象进行旋转。
- `scale`:套装的缩放比例。
- `offset`:套装在身体的偏移量。
接下来,函数对`entity.player`进行了一些修改:
- `scale`属性增加0.2,使角色稍微放大一点。
- `skinInvisible`属性被设置为`true`,表示将某些身体部位设置为不可见。
最后,函数使用循环遍历`suitList`数组,为`entity.player`添加可穿戴的套装效果。每个套装效果包括以下属性:
- `mesh`:套装的模型文件路径。
- `bodyPart`:身体部位。
- `orientation`:旋转方向。
- `scale`:套装的缩放比例。
- `offset`:套装在身体的偏移量。
这段代码的作用是根据传入的`entity`和`skin`参数,为游戏中的角色添加指定的套装效果。
点赞1
评论