mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-24 19:51:53 +00:00
slightly improve camera input
This commit is contained in:
parent
ea7db9d322
commit
0f54661809
1 changed files with 19 additions and 5 deletions
|
|
@ -90,8 +90,8 @@ class CameraInput {
|
|||
scaleFactor /= Settings.touchSettings.buttonJoystickMultiplier;
|
||||
}
|
||||
|
||||
var inpX = delta.x / scaleFactor;
|
||||
var inpY = delta.y / scaleFactor;
|
||||
var inpX = clampInputs(delta.x / scaleFactor);
|
||||
var inpY = clampInputs(delta.y / scaleFactor);
|
||||
|
||||
if (jumpcam) {
|
||||
if (Math.abs(inpX) < 1.3)
|
||||
|
|
@ -99,9 +99,19 @@ class CameraInput {
|
|||
if (Math.abs(inpY) < 1.3)
|
||||
inpY = 0;
|
||||
}
|
||||
var dt = MarbleGame.instance.world.timeState.dt;
|
||||
|
||||
MarbleGame.instance.world.marble.camera.orbit(applyNonlinearScale(inpX) * dt * 25, applyNonlinearScale(inpY) * dt * 25, true);
|
||||
// Calculate velocity (per second) instead of per-frame delta
|
||||
var dt = MarbleGame.instance.world.timeState.dt; // Delta time in seconds
|
||||
var velocityX = inpX / dt;
|
||||
var velocityY = inpY / dt;
|
||||
var velocity = Math.sqrt(velocityX * velocityX + velocityY * velocityY) / 10.0;
|
||||
|
||||
// Apply non-linear scaling based on velocity
|
||||
var scaledVelocity = applyNonlinearScale(velocity);
|
||||
var velocityMultiplier = velocity > 0 ? scaledVelocity / velocity : 1.0;
|
||||
|
||||
MarbleGame.instance.world.marble.camera.orbit((inpX * velocityMultiplier) / 3, (inpY * velocityMultiplier) / 3, true);
|
||||
|
||||
if (inpX != 0)
|
||||
prevMouse.x = e.relX;
|
||||
if (inpY != 0)
|
||||
|
|
@ -122,8 +132,12 @@ class CameraInput {
|
|||
}
|
||||
}
|
||||
|
||||
function clampInputs(value:Float) {
|
||||
return Util.clamp(value, -Settings.touchSettings.cameraSwipeExtent, Settings.touchSettings.cameraSwipeExtent);
|
||||
}
|
||||
|
||||
function applyNonlinearScale(value:Float) {
|
||||
var clamped = Util.clamp(value, -Settings.touchSettings.cameraSwipeExtent, Settings.touchSettings.cameraSwipeExtent);
|
||||
var clamped = value;
|
||||
return Math.abs(clamped) < 3 ? Math.pow(Math.abs(clamped / 2), 2.7) * (clamped >= 0 ? 1 : -1) : clamped;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue