-1

在 Hololens 2 中用手释放球后,我并不是在寻找投掷而是在保持运动。目前,我正在使用 MRTKIMixedRealityTouchHandler界面,主要是功能public void OnTouchStarted(HandTrackingInputEventData data)OnTouchCompleted(HandTrackingInputEventData data).

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

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

4

1 回答 1

0

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

有点像例如(伪代码)

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;
}

于 2022-02-14T18:50:13.513 回答