InteractionTracker.TryUpdatePositionWithAdditionalVelocity(Vector3) 方法

定義

嘗試藉由新增速度來更新 InteractionTracker的位置。

TryUpdatePositionWithAdditionalVelocity 方法會將代表額外速度的輸入 Vector3 新增至 InteractionTracker的目前速度。 因此,由於 InteractionTracker 的速度現在已變更, 因此 InteractionTracker 的目標其餘位置現在會變更。 TryUpdatePositionWithAdditionalVelocity 可以從 Idle、Inertia 或 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

傳回要求識別碼。 在狀態轉換上,造成狀態變更的要求將會包含在引數中。 這些識別碼會在 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 處於其 Interactioning State (使用者主動操作) ,並呼叫 TryUpdatePositionWithAdditionalVelocity,系統會忽略此要求 – 當發生可接聽的情況時,就會引發事件。 如果從其中一個其他狀態傳送,請接聽針對 InertiaStateEntered 引發的事件,並檢查 RequestId 屬性,以識別觸發回呼的要求。 下表摘要說明當這個方法在特定狀態下呼叫時的預期行為:

目前狀態成果
閒置慣性與慣性修飾詞的狀態變更會以要求的速度評估為初始速度
Interacting忽略要求
慣性慣性會重新開機 (狀態重新進入慣性) ,並評估慣性修飾詞,並將要求的速度新增至目前速度
CustomAnimation目前的動畫會停止,並使用要求的速度評估慣性修飾詞的慣性變更作為初始速度

適用於