cesium键盘控制模型
2024-01-07 17:56:36
效果:
由于对添加模型和更新位置api进行二次了封装,下面提供思路
1.添加模型
const person = reactive({
modelTimer: null,
position: {
lon: 104.07274,
lat: 30.57899,
alt: 1200,
heading: 0,
pitch: 0,
roll: 0,
},
});
window.swpcesium.addEntity.addModel({
id: "model",
position: person.position,
config: {
url: "./model/f18.gltf",
minSize: 200,
maxSize: 300,
},
});
2.监听键盘事件并更新模型位置
// 添加键盘监听事件
document.addEventListener("keydown", function (e) {
switch (e.keyCode) {
// 抬头
case 38:
person.position.pitch += 5;
window.swpecesium.addEntity.transform({
id: "model",
position: person.position,
});
console.log("抬头");
break;
// 低头
case 40:
person.position.pitch -= 5;
window.swpecesium.addEntity.transform({
id: "model",
position: person.position,
});
console.log("低头");
break;
// 左转
case 37:
person.position.heading -= 5;
window.swpecesium.addEntity.transform({
id: "model",
position: person.position,
});
console.log("左转");
break;
// 右转
case 39:
person.position.heading += 5;
window.swpecesium.addEntity.transform({
id: "model",
position: person.position,
});
console.log("右转");
break;
// 顺时针
case 96: // 0
person.position.roll += 5;
window.swpecesium.addEntity.transform({
id: "model",
position: person.position,
});
console.log("顺时针翻滚");
break;
// 逆时针
case 110:
person.position.roll -= 5;
window.swpecesium.addEntity.transform({
id: "model",
position: person.position,
});
console.log("逆时针翻滚");
break;
default:
break;
}
});
文章来源:https://blog.csdn.net/m0_63701303/article/details/135403984
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!