我目前正在研究涉及氣泡狀運動的物體。這個物體有一個剛體和一個球體對撞機。使剛體從屏幕邊緣反彈
我每隔1-3秒使用AddForce
方法使其持續緩慢地移動。
現在我想知道如何在已經到達屏幕邊緣時使剛體向相反的方向移動(又稱aa反彈)。我已經使用ViewportToWorldPoint
方法計算了屏幕邊緣。
我想到的一個無效解決方案是在邊緣放置帶有對撞機的空遊戲對象,但這對我而言並不奏效,因爲我正在爲具有不同屏幕分辨率/尺寸的移動設備進行構建。
任何人都知道這個很好的解決方案?
我目前正在研究涉及氣泡狀運動的物體。這個物體有一個剛體和一個球體對撞機。使剛體從屏幕邊緣反彈
我每隔1-3秒使用AddForce
方法使其持續緩慢地移動。
現在我想知道如何在已經到達屏幕邊緣時使剛體向相反的方向移動(又稱aa反彈)。我已經使用ViewportToWorldPoint
方法計算了屏幕邊緣。
我想到的一個無效解決方案是在邊緣放置帶有對撞機的空遊戲對象,但這對我而言並不奏效,因爲我正在爲具有不同屏幕分辨率/尺寸的移動設備進行構建。
任何人都知道這個很好的解決方案?
爲了獲得反射效果,您需要Material
。附加一個有彈性的材料邊緣(gameObject),並讓物理計算應該是什麼碰撞的反應。
創建物理2D材質並將彈跳設置爲某個適當的值,如0.2
。
關於你的問題:
,我認爲的一個無效的解決方案是將空遊戲 對象與對撞機的邊緣,但因爲我建立的移動,不會在我的情況 工作具有不同屏幕的設備 分辨率/尺寸。
如果您正在使用的用戶界面組件,然後用邊界處理不應該是一個問題(因爲它有不同的分辨率錨),但如果情況並非如此,你可以創建一個腳本CameraResizer
和枚舉Anchor
(左工作, Right,Top,Bottom)並使用相同的方法ViewportToWorldPoint
可以通過附加gameObject來將空的gameObject(邊界)與任何屏幕大小對齊。
希望它有幫助!
我不確定我是否有這個想法。但是當我寫舊的手機遊戲時,我想我也遇到了同樣的問題。
我有你沒有同樣的想法,在邊緣上使用與盒撞機空的遊戲對象,但轉念一想,這不敏感,所以我寫了這個代碼:
public class Walls_c : MonoBehaviour {
public Transform righttop;
public Transform rightbottom;
public Transform lefttop;
public Transform leftbottom;
// Use this for initialization
void Start() {
righttop.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(1,1,0));
rightbottom.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(1,0,0));
lefttop.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0,1,0));
leftbottom.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0,0,0));
}
}
有了這個,我總是得到屏幕的角落。這不是幻想......但它的工作原理。
讓我現在,如果它的工作。
感謝您的回答。這有助於確定屏幕的邊緣,以便我可以正確定位我的空遊戲對象,而不管屏幕大小。 – aresz
感謝您的回答。當你說'將有彈性的材料粘貼到ViewPort邊緣時,Unity編輯器中是否有ViewPort對象可以訪問? Unity仍然很新穎,我很抱歉:P如果有的話,這會有所幫助,這樣我就不必手動擔心不同屏幕尺寸的碰撞盒尺寸 – aresz
沒有ViewPort對象。我的意思是將材質附加到用作邊界的gameObject,並且這些邊界應該使用'ViewportToWorldPoint'對齊到屏幕的角落。 – NeverHopeless
啊我明白了。那裏有一秒鐘,我以爲有。我現在明白了。我會試着按照你所建議的方法來反彈。完成後我會更新。 – aresz