InteractionTracker.TryUpdatePositionWithAdditionalVelocity(Vector3) 方法

定义

尝试通过添加速度来更新 InteractionTracker 的位置。

TryUpdatePositionWithAdditionalVelocity 方法将表示其他速度的输入 Vector3 添加到 InteractionTracker 的当前速度。 因此,由于 InteractionTracker 的速度现在已更改, 因此 InteractionTracker 的目标静态位置现在会更改。 TryUpdatePositionWithAdditionalVelocity 可以从空闲、惯性或 CustomAnimation 状态调用 , 这样做将添加或更新 InteractionTracker 的速度并进入惯性状态。

public:
 virtual int TryUpdatePositionWithAdditionalVelocity(float3 velocityInPixelsPerSecond) = TryUpdatePositionWithAdditionalVelocity;
int TryUpdatePositionWithAdditionalVelocity(float3 const& velocityInPixelsPerSecond);
public int TryUpdatePositionWithAdditionalVelocity(Vector3 velocityInPixelsPerSecond);
function tryUpdatePositionWithAdditionalVelocity(velocityInPixelsPerSecond)
Public Function TryUpdatePositionWithAdditionalVelocity (velocityInPixelsPerSecond As Vector3) As Integer

参数

velocityInPixelsPerSecond
Vector3 Vector3

float3

要以像素/秒为单位的加速度。

返回

Int32

int

返回请求 ID。 在状态转换时,导致状态更改的请求将包含在参数中。 这些 ID 将从 1 开始,并在应用程序的生存期内随着每次尝试调用而增加。

示例

// Listen for the InertiaStateEntered event
public void InertiaStateEntered(InteractionTracker sender, 	InteractionTrackerInertiaStateEnteredArgs args)
{
  // Adding velocity to InteractionTracker if condition met
  if (_extraVelocityNeeded)
  {
    // Only adding velocity in the Y direction
    _tracker.TryUpdatePositionWithAdditionalVelocity(new Vector3(0.0f, 50.0f,	0.0f));
  }
}

注解

如果 InteractionTracker 处于交互状态 (用户正在主动操作) ,并且调用 TryUpdatePositionWithAdditionalVelocity,则系统将忽略此请求 - 当发生这种情况时会触发一个可以侦听的事件。 如果从其他状态之一发送,请侦听为 InertiaStateEntered 触发的事件,并检查用于标识触发回调的请求的 RequestId 属性。 下表总结了在特定状态下调用此方法时的预期行为:

当前状态业务成效
闲置惯性和惯性修饰符的状态变化使用请求的速度作为初始速度进行评估
正在交互忽略请求
惯性惯性重启 (状态重新进入惯性) ,并且将请求的速度添加到当前速度时评估惯性修饰符
CustomAnimation使用请求的速度作为初始速度计算惯性修饰符的当前动画停止和状态更改为惯性

适用于