繁体   English   中英

在 Unity Hololens 2 中释放后如何保持对象的速度?

[英]How can I maintain an object's velocity after release in Unity Hololens 2?

在 Hololens 2 中用手释放球后,我正在寻找投掷而不是保持运动。目前,我正在使用 MRTK IMixedRealityTouchHandler接口,主要是函数public void OnTouchStarted(HandTrackingInputEventData data)OnTouchCompleted(HandTrackingInputEventData data)

在 Hololens 2 Emulator 上,当我用手(鼠标)释放球时,它会沿着我指向的大致方向相对缓慢地在空中漂移,这正是我想要的。 我通过减少阻力实现了这一点。 但是,一旦我构建到 HL2 设备本身,就不会模拟这个动作,并且球在释放后立即停在半空中。 为什么会这样?

我尝试添加行rb.AddRelativeForce(Vector3.forward * magnitude, ForceMode.Force); OnTouchCompleted中没有成功。 手放球后如何保持球的运动?

一般来说(我没有看到你的代码的 rest)你可以不断更新相对于最后一帧的速度并最终应用它。

有点像eg(伪代码)

private Vector3 velocity;

void BeginDrag()
{
    rb.isKinematic = true;
    rb.velocity = Vector3.zero;
    lastFramePos = rb.position;
}

void WhileDrag(Vector3 position)
{
    velocity = position -rb.position;
    rb.position = position;
}

void EndDrag()
{
    rb.isKinematic = false;
    rb.velocity = velocity;
}

或者实际上更容易并且可能更准确你可以直接使用

public void OnTouchCompleted(HandTrackingInputEventData data)
{
    rb.velocity = data.Controller.Velocity;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM