簡體   English   中英

如何拉回以拍攝 2D 精靈? (C# + 統一)

[英]How Can I Pull Back To Shoot A 2D Sprite? (C# + Unity)

我在弄清楚如何在我的 2D 圓形精靈上獲得一個簡單的回拉來拍攝腳本時遇到了一些麻煩,我知道它背后的想法,但我無法准確地計算出代碼。

我在 Unity 的 2D 包資產中使用憤怒的小鳥克隆腳本完成了這一半工作,但這依賴於另一個對象並與彈簧關節鏈接,它在某種程度上起作用,但是如果我嘗試在特定的情況下緩慢地拍攝它角度,它將向后射擊,而不是按原定的方向射擊。

此外,我需要將腳本放在球本身上,以便當球停止移動時,可以從該位置再次射門。

這是我正在考慮的解決方案,但無法計算出以下確切代碼:

Mathf.Atan2(ballStartY - ballCurrentY, ballStartX - ballCurrentX)。 然后也許可以通過以某種方式添加 180 來翻轉它?

然后使用角度將其分解為 x 和 y 分量(xSpeed = cos(angle) * force)和(ySpeed = sin(angle) * force)?

我還需要在點擊時使用鼠標位置,就像我碰巧移動球並使其在點擊時運動並鎖定它,這樣您就無法將其拉回超過指定的浮動量。

我真的很感激你能提供的任何幫助! 謝謝大家!

如果我理解正確,您會遇到三個問題:使物體移動,讓物體在停止時重新投擲,以及如何拉動物體以發射它。

因此,對於第一個,如果您旋轉球以使局部繩索的 x 軸在您想要射擊的方向上,那么您可以使用此代碼使球以向量 3 指示的某個幅度向前飛行。 力模式是脈沖,因為您需要瞬時力。

gameObject.GetComponent<Rigidbody>().AddRelativeForce(9,0,0, ForceMode.Impulse);

使用查看功能,旋轉應該很簡單。 此類文檔在 這里,然后您可以使用四元數函數旋轉 180 度。 你用它和鼠標位置來得到這樣的東西:

rotation = Quaternion.Euler(180, 0, 0) * Input.mousePosition;
transform.LookAt(Rotation);

然后只需使用 if 來確定您是否單擊以激活它。 如果您想顯示它被拉回,請使用 Vector3.Distance 和 if 語句,例如:

if(Vector3.Distance(thisGameobeject, someParentObjectThatWontMoveWhenPulledBack)<50)
{pull further back}

至於檢查您是否停止,您可以使用帶有 Rigidbody.velocity 的 if 語句,這應該涵蓋所有內容。 我希望這至少會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM