A-frame 将跳跃高度设置为变量
A-frame set jump height to a variable
我正在使用 Aframe 制作视频游戏,我想知道如何将跳跃高度设置为变量。这是我目前使用的代码
<a-entity id="rig"
position="17.5 50.1 0"
movement-controls="speed: 0.2;"
kinematic-body="enableJumps: true;"
jump-ability="distance: 1.8;"
networked="template:#avatar-template;attachTemplateToLocal:false;"
spawn-in-circle="radius:3"
tracker>
<a-entity camera="far: 1000;"
wasd-controls
look-controls="pointerLockEnabled: true;"
position="0 1.6 0">
</a-entity>
</a-entity>
我想要的是将跳跃能力设置为等于一个变量。例如:jump-ability="distance: VARIABLE;"
有谁知道我怎样才能做到这一点?
没有任何框架(如 angular 或 React)你 。
如果你想要一些外部 js 脚本来修改 属性,你应该使用 setAttribute()
:
// either use any logic in a js script
const btn = document.querySelector("button");
const sphere = document.querySelector("a-sphere");
btn.addEventListener("click", e => {
// set the radius to a random number
sphere.setAttribute("radius", Math.random() * 1 + 0.5);
})
<script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
<button style="z-index: 999; position: fixed">RESIZE</button>
<script>
// or preferably within a custom component
AFRAME.registerComponent("foo", {
init: function() {
const btn = document.querySelector("button");
const sphere = document.querySelector("a-sphere");
btn.addEventListener("click", e => {
// no need to duplicate the script logic
// sphere.setAttribute("radius", Math.random() * 1 + 0.5);
})
}
})
</script>
<a-scene foo>
<a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
</a-scene>
每次单击按钮都会更改 radius
值。
修复您的代码
您的组件有错误,永远无法正常工作。
这是您的代码片段:
AFRAME.registerComponent("foo", {
init: function() {
var acceleration = 100;
const cam = this.el.sceneEl.camera.el;
const btn = document.querySelector("button");
btn.addEventListener("click", e => {
acceleration = acceleration === 100 ? 25 : 100;
cam.setAttribute("speed", "mouvement-controls", acceleration);
})
}
})
- 您在
mouvement-controls
而不是 movement-controls
中有错字
- 您尝试以错误的顺序设置属性。这就是您的代码试图做的
speed="mouvement-controls: {acceleration}"
。但是你想要这样movement-controls="speed: {acceleration}"
。你必须改变参数的顺序
- 最后一件事 - 你需要在你的装备上设置
movement-controls
,而不是相机
- 另请注意:速度 1 与加速度 65 相似。因此将速度设置为 100 将使您以 光速
移动
这是您的组件的固定版本
AFRAME.registerComponent("foo", {
init: function() {
var acceleration = 1;
const rig = document.getElementById("rig");
const btn = document.querySelector("button");
btn.addEventListener("click", e => {
acceleration = acceleration === 1 ? 0.1 : 1;
rig.setAttribute("movement-controls", "speed", acceleration);
})
}
})
我正在使用 Aframe 制作视频游戏,我想知道如何将跳跃高度设置为变量。这是我目前使用的代码
<a-entity id="rig"
position="17.5 50.1 0"
movement-controls="speed: 0.2;"
kinematic-body="enableJumps: true;"
jump-ability="distance: 1.8;"
networked="template:#avatar-template;attachTemplateToLocal:false;"
spawn-in-circle="radius:3"
tracker>
<a-entity camera="far: 1000;"
wasd-controls
look-controls="pointerLockEnabled: true;"
position="0 1.6 0">
</a-entity>
</a-entity>
我想要的是将跳跃能力设置为等于一个变量。例如:jump-ability="distance: VARIABLE;"
有谁知道我怎样才能做到这一点?
没有任何框架(如 angular 或 React)你
如果你想要一些外部 js 脚本来修改 属性,你应该使用 setAttribute()
:
// either use any logic in a js script
const btn = document.querySelector("button");
const sphere = document.querySelector("a-sphere");
btn.addEventListener("click", e => {
// set the radius to a random number
sphere.setAttribute("radius", Math.random() * 1 + 0.5);
})
<script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
<button style="z-index: 999; position: fixed">RESIZE</button>
<script>
// or preferably within a custom component
AFRAME.registerComponent("foo", {
init: function() {
const btn = document.querySelector("button");
const sphere = document.querySelector("a-sphere");
btn.addEventListener("click", e => {
// no need to duplicate the script logic
// sphere.setAttribute("radius", Math.random() * 1 + 0.5);
})
}
})
</script>
<a-scene foo>
<a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
</a-scene>
每次单击按钮都会更改 radius
值。
修复您的代码
您的组件有错误,永远无法正常工作。
这是您的代码片段:
AFRAME.registerComponent("foo", {
init: function() {
var acceleration = 100;
const cam = this.el.sceneEl.camera.el;
const btn = document.querySelector("button");
btn.addEventListener("click", e => {
acceleration = acceleration === 100 ? 25 : 100;
cam.setAttribute("speed", "mouvement-controls", acceleration);
})
}
})
- 您在
mouvement-controls
而不是movement-controls
中有错字
- 您尝试以错误的顺序设置属性。这就是您的代码试图做的
speed="mouvement-controls: {acceleration}"
。但是你想要这样movement-controls="speed: {acceleration}"
。你必须改变参数的顺序 - 最后一件事 - 你需要在你的装备上设置
movement-controls
,而不是相机 - 另请注意:速度 1 与加速度 65 相似。因此将速度设置为 100 将使您以 光速 移动
这是您的组件的固定版本
AFRAME.registerComponent("foo", {
init: function() {
var acceleration = 1;
const rig = document.getElementById("rig");
const btn = document.querySelector("button");
btn.addEventListener("click", e => {
acceleration = acceleration === 1 ? 0.1 : 1;
rig.setAttribute("movement-controls", "speed", acceleration);
})
}
})