我有一個游戲,你用平臺彈球,你必須摧毀所有的盒子,但我的彈球代碼不能像我想要的那樣作業。
它的作業原理就像一個真正的球彈跳,但我希望球像乒乓球一樣彈跳,球在碰到墻壁或平臺之前不會掉下來,但我的球會進入現實生活中的曲線。
我對曲線的看法就像你在空中踢球并進入曲線但我希望它無限地以平線向墻壁移動并以隨機方向彈跳。
有人有任何代碼想法嗎?
uj5u.com熱心網友回復:
制作如下所示的物理材料,并將其放置在任何反彈的表面上。你的球有一個Rigidbody阻力為0就足夠了。

還要取消選中重力以獲得以下結果:


基本力腳本:
將剛體添加到球后,您可以使用以下腳本作為初始力。顯然,您需要更高級的演算法來進一步開發。
public Vector3 force = new Vector3(80, 40);
void Start() => GetComponent<Rigidbody>().AddForce(force);
uj5u.com熱心網友回復:
乒乓/突破式物理比您想象的要簡單。球沒有施加重力,因此您需要做的就是對球施加恒定的速度。當它與一個物體碰撞時,你會翻轉它碰撞的軸上的速度。
例如:球以 60 像素/秒的速度向上移動,以 120 像素/秒的速度水平移動,速度為 60 fps。每幀垂直添加 (60/60)=1 像素,水平添加 (120/60)=2。它撞到了墻上,所以你將水平速度翻轉到 -120 像素/秒。現在它仍在上升,但水平方向相反。如果它撞到天花板,同樣的事情,但翻轉垂直速度分量。
如果您希望它朝隨機方向發展:
- 計算球速度的大小
sqrt(vx^2 vy^2) - 找到墻面對的角度
- 在該角度的 180 度內選擇一個隨機角度
- 使用三角函式來獲得該角度的 x/y 分量,然后乘以幅度。
不要在每一幀的速度上減去/添加一個常數值,因為那樣你就會應用重力,這不是你想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479353.html
