@adatechnology/game-charraters- 三号机车
三.j. 介绍 @adatechnology/game-characters. 3.js 由主办方传入(import * as THREE from 'three'),所以同一代码从捆绑者或从平版脚本(英语:dist/index.global.js 揭露 GameCharactersThree 联合国.
出现人群 (游戏的文学口,G 65336-65541):
buildInstancedBody(THREE, { segments, body? }):合并的几何学(torso,头部,发型,下巴,眼睛,手臂,腿部)被用骨,支点和材料来标记;16,10和5个段是三个层次的细节.body默认为TEAM_GAME; 任意BodySpec移动关节.BODY_CHUNK编号 :createBodyChunk:GPU所平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起.createBodyMaterial添加了斑点和发光的眼睛.createBodyBatch数字 :begin, (中文(简体) ),push每个身体,end;一个画召一个完整的变体.bakeBody财务报告和审定财务报表bakeVariants:将一具丰富的躯体烘烤成可显示几何;游戏的三种变体规则(7000 + c·101 + v·13) (中文(简体) ).createFlyingLimbs:40个被撕开的碎片会飞出,弹出并停留,并有注射出血的效果.
import * as THREE from 'three'
import { buildInstancedBody, createBodyBatch } from '@adatechnology/game-characters-three'
const time = { value: 0 }
const batch = createBodyBatch(THREE, buildInstancedBody(THREE, { segments: 10 }), { max: 700, time })
scene.add(batch.mesh)
batch.begin()
batch.push({ a: [x, z, yaw, phase], b: [1.8, 1, stride, 0], c: [missingMask, infection, 1, skinTone], color: { r: 0.3, g: 0.4, b: 0.5 }, eye: { r: 1, g: 0.2, b: 0.1 } })
batch.end()
time.value += dt
尸体的声音和血迹 联 合 国 @adatechnology/game-audio 和正在运行的电影 @adatechnology/game-fluids-three:
createCharacterSound(host.audio, { style? })数字 :voice(typeId, 'idle' | 'alert' | 'special', position)13个不死类型(UNDEAD_VOICES游戏的呻吟和尖叫,艺术场景voice呻吟 有尖叫 有跳跃 有页面的类规则 对于它没有的类型,body(event, position)(伤=肉,切=断,裂或裂=去),player('grab' | 'bite' | 'hurt')16个配方CHARACTER_SOUND_BANK)留下与团队代码相同的痕迹.createFluidsBridge({ sink, film })财务报告和审定财务报表bloodLookOfAge(age)(单位:千美元)body事件将血液滴入胶片,在感染年龄的新鲜而干燥的颜色中(ages.json, (中文(简体) ),old_blood对于瘦的.
玩家阿凡达. createPlayerAvatar(THREE, options?) 是团队游戏的玩家身体: 由Bestiário/Elenco所建的富人 presets/player-avatar.json
(单位:千美元){ type: 'Lento', human: true, seed: 4242, skin, hs: 'short', hair }衬衫 0x3d5a73),具有压倒性 { spec, shirtColor, clips, blend, fallSeconds, cascade, clipCascade } (单位:千美元)clipCascade,默认 5 : 关节跟随的速度是多少倍,而一个不循环播放的片段,所以一击通过撞击到达了它的姿势.
const player = createPlayerAvatar(THREE)
scene.add(player.root)
player.update(dt, { speed, crouch, down, armed, pitch, hip }) // the gait is tied to the ground speed (cadence and swing from `walkCadence`/`walkGait`)
player.hand('R').add(weaponMesh) // a socket at the weapon hand
player.play('grabbed_bitten_human', { onEvent: (event) => event.type === 'impact' && applyBlow() }) // or player.play(myClip); player.on('event', fn); player.stop()
蹲下和瞄准的手臂从游戏的GPU平面代码(BODY_CHUNK,引用的行 src/player/avatar.ts蹲着就是大腿 -0.95膝盖 1.9后备箱 +0.25臀部 臀部 -0.35· ;
向下转动身体±1.5 弧度,在相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相; armed 如下 (pitch + 1) / 3。 。 。 . play 覆盖 a PoseClip 联 合 国 @adatechnology/game-characters
(单位:千美元)channels: 'upper' 将双腿留给后腿;而只蹲下一脚取出双腿,因此一拳或后卫保持低调)与0.12 s相混合并放出其事(出声:impact, (中文(简体) ), phase一次通过 onEvent 财务报告和审定财务报表 on('event')。 。 。 . hand('R') 是武器手(木偶右手,在-x). 姿势片段 armL编号 :legL 频道移动该侧( t)arms[1]编号 :legs[0]),这样 punch_right 财务报告和审定财务报表 front_kick 联 合 国 ATTACK_CLIPS 驱动 armL 财务报告和审定财务报表 legL第一人称视图显示的同一只手臂和腿.
在试验室. room.setAvatar(toRoomAvatar(player, { strikeClips: ATTACK_CLIPS })) (或 defaultCharacterClips() 联 合 国 game-kit-defaults,它也有第一人称剪辑),显示在玩家脚下的身体(toRoomAvatar 只翻出投出: 房间计算一个向上看作为正向看, 球队比赛显示为向下看) V 切换在第一人称和第三人称之间
@adatechnology/game-test-room。 。 。 . createAvatarTestModule({ avatar, camera, state }) 区域中的模块 avatar_area (单位:千美元)AVATAR_AREA_ID:取景(第1/3人)的长凳按钮,蹲起,站起,倒起,起起,武装起/起,
每个已注册剪辑一个按钮( q)Tocar: grabbed_bitten_human, (中文(简体) ), grab_bite_zombie,并与 clips: [...POSE_CLIPS, ...ATTACK_CLIPS] 拳打脚踢和后坐力; clipLocales 给出相位文本)并停止; 用于相机,剪辑播放,最后剪辑事件和关节的度量. 每一个动作都是JSON记录中的一行({"type":"avatar","action":"play_clip","clip":...}包括剪辑活动,以及 impact 事件也获得自己的 {"action":"impact","clip":...,"t":...} 线条.
模块取出身体,取出视野(camera: { mode, set })并州(state: { set }(按选择和进口) @adatechnology/game-contracts。 。 。 .
toRoomAvatar 也给房间 strike(clipId),它弹出攻击弹夹在身体上(攻击的唯一来源,第一和第三人),并回答从该弹夹读取的撞击数秒(两种观点都相同). strike(clip, { leg: 'left' }) 踢出左脚 strike(clip, { hand: 'left' }) 以左手出拳:身体上弹夹的镜子(出自"左传"mirrorPoseClip编号 <clip>_left) (中文(简体) ). 在拳打脚踢之后 impact 类型 punch) 身体持有警卫(guardClip默认值 'fight_guard', (中文(简体) ), false (无)
guardHold 秒(默认为1.2),而它静静地站着, 所以一个组合去守卫, 拳击, 守卫; 拳击混合在 punchBlend (默认为0.05 s). 走走跑跑 武器或被扣留的物品 放下了警卫.
第一人称臂. createFirstPersonArms(THREE, { colors?, rig?, stances?, clips?, blend?, bob? }) 将袖子(上臂取出,前臂取出,肘取出,袖取出)和手取出于相机空间的皮肤(手掌取出四指取出三段取出,拇指取出后紧紧握住),外加右腿取出,只在踢出时才显示. arms.update(dt, { camera, targets, stance, speed, running, crouch, contact? })页:1 relaxed 财务报告和审定财务报表 fists 姿势是休息姿势(FIRST_PERSON_STANCES从 presets/first-person-arms.json, (中文(简体) ), hold 沿着 HandTargets 联 合 国 game-contracts (世界空间)从固定肩上取出一双骨头的IK,肘向下弯曲并出;一个无法到达的目标被夹住(肩部移动) reachShift 向着它第一. arms.play('punch_right' | 'shove_two_hands' | 'front_kick') 覆盖 a FirstPersonClip (单位:千美元)FIRST_PERSON_CLIPS 联 合 国 game-characters-people,与攻击片段相同的持续时间和撞击秒; arms.on('event', fn) 给它 impact· ; arms.handPose(side) 读取手被抽出的地方. contact(origin, direction, maxDistance) (可选的;与第一地表相距或为空)使手和踢脚在沿相机向前行走的地表(肘弯)前停下几毫米; arms.play('front_kick', { leg: 'left' }) 踢出左脚 arms.play('punch_right', { hand: 'left' }) 用左手出拳(镜中夹子的手). 手框:x手腕到指关节,y后手,z小指侧;左手为右相镜.
几何
建造者createPersonBuilder, (中文(简体) ), createBestBuilder, (中文(简体) ), bakeBody, (中文(简体) ), buildInstancedBody, (中文(简体) ), createFlyingLimbs, (中文(简体) ), createEye绘制与
shapeGeometries(host) 联 合 国 game-shapes-three盒子、圆筒、圆锥、圆圈、戒指、花环和托里都来了
取自同为字节的游戏形状;十二面体,形状和胶囊几何为三相. tests/exact-golden.test.ts 保持每一点
旧道创造了它们.