首页 > 大数据 > 可视化 > 仅需几行代码轻松实现第一人称行走
• A:左移 • D:右移 • W:前进 • S:后退 • 空格:跳跃(当开启重力时生效) • 鼠标:按下左键旋转场景

var app = new THING.App({
url: 'https://www.thingjs.com/static/models/storehouse'
});
// 加载场景后执行
app.on('load', function () {
app.camera.position = [0, 10, 0]; // 起始位置 就是摄像机位置, 不设置就会在摄像机位置直接开始
var ctrl = app.addControl(
new THING.WalkControl({
walkSpeed: 0.02, // 行走速度
turnSpeed: 0.25, // 右键旋转速度
gravity: 29.8, // 物体重量
eyeHeight: 1.6, // 人高度
jumpSpeed: 10, // 按空格键 跳跃的速度
enableKeyRotate: false, // 默认不开启键盘控制旋转
useCollision: false, // 默认不开启碰撞检测
useGravity: true // 默认开启重力
})
);
});

// GUI
gui = new THING.widget.Panel({ 'titleText': '第一人称行走', 'hasTitle': true });
gui.position = [10, 200];
gui.addBoolean(ctrl, 'enableKeyRotate').caption('键盘控制旋转');
gui.addBoolean(ctrl, 'useCollision').caption('碰撞检测');
gui.addBoolean(ctrl, 'useGravity').caption('重力检测');
gui.addNumberSlider(ctrl, 'gravity').caption('重力').step(1).min(0).max(50).isChangeValue(true);
gui.addNumberSlider(ctrl, 'jumpSpeed').caption('跳起速度').step(1).min(0).max(30).isChangeValue(true);
}
/**
* 删除控件
*/
function remove_control() {
if (ctrl) {
// 设置摄像机位置和目标点
app.camera.position = [50.260000000000005, 35.129000000000005, 59.32699999999999];
app.camera.target = [10.852, 0.175, 9.311];
app.removeControl(ctrl);
ctrl = null;
gui.destroy();
}
}
var app = new THING.App({
url: 'https://www.thingjs.com/static/models/storehouse'
});
// 加载场景后执行
app.on('load', function () {
// 创建按钮
new THING.widget.Button('添加控件', add_control);
new THING.widget.Button('重置', remove_control);
});
/**
* 添加控件
*/
var ctrl = null;
var gui = null;
function add_control() {
if (ctrl) {
return;
}
app.camera.position = [0, 10, 0]; // 起始位置 就是摄像机位置, 不设置就会在摄像机位置直接开始
ctrl = app.addControl(
new THING.WalkControl({
// 参数可以动态修改
walkSpeed: 0.02, // 行走速度
turnSpeed: 0.25, // 右键旋转速度
gravity: 29.8, // 物体重量
eyeHeight: 1.6, // 人高度
jumpSpeed: 10, // 按空格键 跳跃的速度
enableKeyRotate: false, // 默认不开启键盘控制旋转
useCollision: false, // 默认不开启碰撞检测
useGravity: true // 默认开启重力
})
);
// GUI
gui = new THING.widget.Panel({ 'titleText': '第一人称行走', 'hasTitle': true });
gui.position = [10, 200];
gui.addBoolean(ctrl, 'enableKeyRotate').caption('键盘控制旋转');
gui.addBoolean(ctrl, 'useCollision').caption('碰撞检测');
gui.addBoolean(ctrl, 'useGravity').caption('重力检测');
gui.addNumberSlider(ctrl, 'gravity').caption('重力').step(1).min(0).max(50).isChangeValue(true);
gui.addNumberSlider(ctrl, 'jumpSpeed').caption('跳起速度').step(1).min(0).max(30).isChangeValue(true);
}
/**
* 删除控件
*/
function remove_control() {
if (ctrl) {
// 设置摄像机位置和目标点
app.camera.position = [50.260000000000005, 35.129000000000005, 59.32699999999999];
app.camera.target = [10.852, 0.175, 9.311];
app.removeControl(ctrl);
ctrl = null;
gui.destroy();
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980539/viewspace-2773130/ ,如需转载,请注明出处,否则将追究法律责任。