Я использую физический движок в моем приложении aframe, и я хочу, чтобы камера двигалась, когда пользователь нажимает кнопку.
Я хочу сохранить свойства физического движка, поэтому использую 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?