[Unity3D] 用 C# 代碼控制重力方向


在 unity 引擎中, 修改重力方向的方法一般有三種:

1: 在 項目設置 中修改全局重力方向

  

左上角菜單欄 Edit --> Project Settings --> Physucs

 修改 Gravity 中的 X Y Z 的值即可做到控制全局的重力方向, 默認情況下的 Y 軸的值為 -9.81

 

 

2: 通過代碼的方式修改全局的重力方向

public class GravityController : MonoBehaviour {

    public bool flag = false; 
    private Vector3 gravity;
 
    void Start() {
        gravity = Physics.gravity;
    }

    void FixedUpdate() {
        Physics.gravity = gravity;
        if (flag) {   // 修改重力方向
            gravity.x = 0;
            gravity.y = 9.81f;
            gravity.z = 0;
        }else{
            gravity.x = 0;
            gravity.y = -9.81f;
            gravity.z = 0;
        }
    }
}

 

3: 修改單個物體的重力方向

這個嚴格來說的話並不科學, 過隨意修改重力方向好像本來就不科學, 但是也就是說我們無法通過直接修改跟重力相關的函數的變量來達到控制重力方向的目的, 但是我們可以通過修改物體的受力方向來模擬物體受到了不同方向的重力的影響,,雖然說起來有點拗口, 不過做起來也是很簡單的

首先, 如上圖, 我們去把 Gravity 中的 X Y Z 三個方向的重力全部設置為 0 , 然后在你想要修改重力受力方向的物體上加如下程序即可

public class GravityController : MonoBehaviour {

    public bool flag = false;

    void FixedUpdate() {
        if (flag) {
            Rigidbody rigidbody = gameObject.GetComponent<Rigidbody>();
            rigidbody.AddForce(new Vector3(0, 9.81f, 0));
        } else {
            Rigidbody rigidbody = gameObject.GetComponent<Rigidbody>();
            rigidbody.AddForce(new Vector3(0, -9.81f, 0));
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM