MMSDT.avatarControl()
在场景中以第一人称的视角控制虚拟化身人物的漫游,可控制包括站立、行走、跑步、跳跃等动作。
Tips: 虚拟化身人物模型需绑定动画。
Tips: W、S、A、D键行走方向,空格键跳跃。
构造函数
MMSDT.avatarControl( parameters: object )
parameters - 数组,包含json格式的对象参数。
avatar - 模型对象,虚拟人物模型
actions - 数组,动画序列下标,顺序分别为[站立、行走、跑步、跳跃]
rotation - 浮点数,人物旋转弧度
distance - 数字,视线距离虚拟人物的距离
speed - 数字,人物默认移动速度
running - 数字,人物跑步阈值,行走速度达到这个值就调用跑步动画
collision - 构造函数,碰撞检测器
stature - 数字,人物高度矫正,基本与collision中的stature相同
light - 数组,添加光线跟踪,人物在地面产生阴影,光源相对人物的坐标方向
lightIntensity - 数字,跟踪光线的强度,为0则关闭
属性
.moveSpeed( value )
改变漫游速度
value - 数字,漫游速度
.light( value )
光线跟踪的光线强度
value - 字符串,参数里的数组下标
代码示例
var MMS3D_exceptionMesh = []; //需要材质拆分的网格
var MMS3D_instancingMesh = []; //合并实例化网格
//初始化场景
MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh );
//设置第3人称鼠标控制器
controls3.maxPolarAngle = Math.PI*0.51; //向下,最大角度限制
controls3.enablePan = false; //是否开启鼠标右键屏幕空间平移
controls3.enableDamping = true; //是否开启惯性阻尼
controls3.dampingFactor = 0.1; //惯性阻尼系数
//使用json文件让场景还原
MMSDT.onloadScene( "models/mms3D_oldFactory2.json", function(progress){
if( progress == 'done' ){
//加载完成
onloadDone();
}else if( progress == 'ok' ){
}else{
//显示进度条数字
document.getElementById("loadNum").innerHTML = Math.round( progress )+'%';
}
});
//如果用<iframe>嵌入,需要获取焦点,否则第1人称漫游时候,键盘WASD不起作用
container.addEventListener( 'pointerdown', function(){
focus();
}, false );
var avatar; //虚拟化身人物
//场景加载完成
function onloadDone(){
//把碰撞物模型归集
var grounds = [];
var childs=["ck011","ck012","ck037","ck082","ck255","ck002"]; //地面、墙
//模型再次设置
models[0].traverse( function ( child ) {
if ( child.isMesh ) {
for( var i=0; i<childs.length; i++ ){
if( child.name == childs[i]){
grounds.push( child ); //归集需要碰撞检测的模型
}
}
}
});
//设置虚拟化身人物///////////////////////////////////////////////////////////////////////////
//定义碰撞检测
var parameter = {
ground: grounds, //碰撞检测物
distance: 4, //前后左右检测的距离
height: 8, //碰撞点高度(前后左右的监测点),需小于人的高度,过高很容易跨越障碍
stature: 7, //人的高度
gravity: 0.2, //重力
enabled: false, //默认碰撞检测关闭
}
var collision = new MMSDT.collision( parameter ); //初始化碰撞检测
//绑定虚拟化身控制系统
var options = {
avatar: models[1], //虚拟人物模型
actions: [3,1,0,2], //动画序列下标,顺序分别为[站立、行走、跑步、跳跃]
rotation: Math.PI, //人物旋转弧度
distance: 25, //视线距离虚拟人物的距离
speed: 15, //人物移动速度
running: 50, //人物跑步阈值,行走速度达到这个值就调用跑步动画
collision: collision, //碰撞检测器
stature: 6.2, //人物高度矫正,基本与collision中的stature相同
light: [-10,10,10], //添加光线跟踪,人物在地面产生阴影,光源相对人物的坐标方向
lightIntensity: 5, //跟踪光线的强度,为0则关闭
}
avatar = new MMSDT.avatarControl( options );
}
//自定义对外函数接口------------------------------------------------------------------------
//行走速度
MMAPI.moveSpeed = function(value){
avatar.moveSpeed( value) ;
}
//光线强度
MMAPI.changeLight = function(value){
avatar.light( value) ;
}
点击查看示例演示 →
Powered by mms3D