zoukankan      html  css  js  c++  java
  • [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));
            }
        }
    }
  • 相关阅读:
    java基础—GUI编程(一)
    java基础—数组
    java基础—异常处理
    java基础—面向对象
    多线程(二)
    多线程(一)
    ORACLE数据库SQL语句的执行过程
    Jetty直接调试,不用部署,不用弄一些杂七杂八的设置
    (2.1)servlet线程安全问题
    (3)tomcat源代码分析环境的搭建
  • 原文地址:https://www.cnblogs.com/unityworld/p/13402519.html
Copyright © 2011-2022 走看看