簡體   English   中英

如何根據C#中的鼠標光標位置圍繞另一個對象旋轉GameObject

[英]How to rotate a GameObject around another object according to the mouse cursor position in C#

我正在嘗試根據鼠標光標的移動來旋轉對象(例如泡泡射擊游戲中的泡泡槍)。 但是我被要求用我的腳本來做到這一點。

我的腳本是:

mouse_pos = Input.mousePosition;
Debug.Log(mouse_pos);
object_pos = Camera.main.WorldToScreenPoint(target.position);
mouse_pos.x = mouse_pos.x - object_pos.x;
mouse_pos.y = mouse_pos.y - object_pos.y;
angle = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0,-angle);

它只會旋轉它不會移動的相同位置。 請任何人幫我解決這個問題。 或指出我任何好的教程...。

如果我正確理解了您的問題,則對象的變換圍繞其本地原點旋轉,這就是為什么您看到正確的旋轉但沒有平移的原因。

Unity按以下順序應用變換:縮放,平移,旋轉。

解決該問題的最簡單方法是將對象的變換作為父變換到另一個父變換,然后旋轉父變換(對對象的變換應用了平移)。 請注意,您將必須修改對象變換的任何縮放或平移,因為它現在將繼承父變換的旋轉。

希望對您有所幫助,否則請提供有關您的問題的更多詳細信息。

暫無
暫無

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

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