2017-05-18 121 views
0

在我的遊戲中,玩家使用虛擬模擬來瞄準特定對象,當他釋放模擬角色時應該朝該對象移動。 我要存儲對象的位置(更像,玩家應移動基於對象的位置方向)的一個變量,但只有當它是光線與相撞的最後一件事:存儲Raycast命中信息

Vector3 targetPos; 

RaycastHit hit; 
if (Physics.Raycast (pos, dir, out hit, 10, targetLayer)) { 

    Vector3 moveDir = (hit.point - transform.position).normalized; 
    targetPos = moveDir; 
} else { 
    targetPos = Vector3.zero; 
} 

這樣做這個targetPos變量在釋放模擬後總是返回到零,即使最後碰撞的對象是特定的對象。

編輯: 基於@MukeshSaini評論解決。謝謝,所有。

+2

你的問題是什麼? – Programmer

+0

你的代碼是否在if語句中出現?你可以通過一個'BreakPoint'和調試來確認。 – Hristo

+0

@編程器,OP在釋放模擬器後不希望'targetPos'值變爲零。 @ Abdou023,你能不能分享更多的代碼,我認爲你甚至在用戶發佈模擬後會使用raycast,它可能會在'Physics.Raycast'中返回false,並在'else'塊中將'targetPos'設置爲'Vector3.zero'。 –

回答

1

我想你甚至用戶發佈的模擬可能爲Physics.Raycast被返回false和else塊設置targetPosVector3.zero後使用光線投射。

只有當用戶正在使用模擬信號時,才能將條件發送給raycast,這將在用戶釋放模擬信號後停止執行不必要的其他模塊,並且targetPos將保留其正確的值。