我在我的幀內應用程序中使用了一個物理引擎,我希望攝像頭在用戶單擊按鈕時移動。用物理引擎在幀中移動攝像頭
我想保留物理引擎屬性,所以我使用applyImpulse作爲運動方法。
這裏是我的示例場景:
<script src="https://aframe.io/releases/0.3.0/aframe.min.js"></script>
<script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v2.3.0/dist/aframe-extras.min.js"></script>
<a-scene physics>
<!-- Camera -->
<a-entity id="cameraWrapper" geometry="box" dynamic-body="mass:1" position="0 1 0" width="2" height="1" depth="2" listener>
<a-entity id="camera" camera universal-controls position="0 1 0" rotation="0 0 0">
</a-entity>
</a-entity>
<a-grid static-body position="0 0 0"></a-grid>
</a-scene>
<div>
<a id="impulseButton">Move</a>
</div>
是應該移動攝像機的JavaScript方法是這樣的:
$(document).ready(function(){
$("#impulseButton").on("click",function(){
applyImpulse();
});
function applyImpulse(){
var x = 0;
var y = 0;
var z = 1;
var el = $('#cameraWrapper')[0];
el.body.applyImpulse(
new CANNON.Vec3(x,y,z),
new CANNON.Vec3().copy(el.body.position)
);
}
});
然而,運動似乎不是很順暢,而當用戶使用WASD控件,cameraWrapper實體保留在舊位置。我怎樣才能平穩地使用applyImpulse移動相機?
這仍然不適用於物理引擎 – bear
它確實有效,[現場演示](https://sandbox.donmccurdy.com/walls/)。該演示的源代碼鏈接在答案中。 –
我知道運動人體檢測到碰撞,但我不明白這是如何與applyImpulse或任何其他方法相結合,以相機方式移動相機以檢測碰撞時以編程方式移動相機。對不起,如果這不清楚我的問題。 – bear