Unity 3D 物理管理器(Physics Manager)

2020-07-17 19:24 更新

Unity 3D 集成開(kāi)發(fā)環(huán)境作為一個(gè)優(yōu)秀的游戲開(kāi)發(fā)平臺(tái),提供了出色的管理模式,即物理管理器(Physics Manager)。

物理管理器管理項(xiàng)目中物理效果的參數(shù),如物體的重力、反彈力、速度和角速度等。

在 Unity 3D 中執(zhí)行 EditProject SettingsPhysics 命令可以打開(kāi)物理管理器。

可以根據(jù)需要通過(guò)調(diào)整物理管理器中的參數(shù)來(lái)改變游戲中的物理效果,參考以下參數(shù)列表:

選項(xiàng) 含義 描述
Gravity 重力 應(yīng)用于所有剛體,一般僅在 Y 軸起作用。
Default Material 默認(rèn)物理材質(zhì) 如果一個(gè)碰撞體沒(méi)有設(shè)置物理材質(zhì),將采用默認(rèn)材質(zhì)。
Bounce Threshold 反彈閾值 如果兩個(gè)碰撞體的相對(duì)速度低于該值,則不會(huì)反彈。
Sleep Velocity 休眠速度 低于該速度的物體將進(jìn)人休眠。
Sleep Angular Velocity 休眠角速度 低于該角速度的物體將進(jìn)人休眠。
Max Angular Velocity  最大角速度 用于限制剛體角速度,避免旋轉(zhuǎn)時(shí)數(shù)值不穩(wěn)定。
Min Penetration For Penalty 最小穿透力 設(shè)置在碰撞檢測(cè)器將兩個(gè)物體分開(kāi)前,它們可以穿透 多少距離。
Solver Iteration Count 迭代次數(shù) 決定了關(guān)節(jié)和連接的計(jì)算精度。
Raycasts Hit Triggers 射線(xiàn)檢測(cè)命中 觸發(fā)器 如果啟用此功能,在射線(xiàn)檢測(cè)時(shí)命中碰撞體會(huì)返回一 個(gè)命中消息;如果關(guān)閉此功能,則不返回命中消息。
Layer Collision Matrix 層碰撞矩陣 定義層碰撞檢測(cè)系統(tǒng)的行為。

實(shí)踐案例

  1. 創(chuàng)建新項(xiàng)目。場(chǎng)景命名為 migong。

  1. 創(chuàng)建游戲?qū)ο蟆?/li>

執(zhí)行菜單欄中的 GameObject3D ObjectPlane 命令,創(chuàng)建平面,并賦予材質(zhì)。

執(zhí)行 GameObject3D ObjectCube 命令創(chuàng)建若干個(gè)盒子,構(gòu)成迷宮場(chǎng)景。

  1. 導(dǎo)入模型資源。

從 Unity 3D 商店中選擇 3D 模型資源并加載到場(chǎng)景中,將其命名為 treasure.

  1. 將模型資源導(dǎo)入到 Hierarchy 視圖中.

  1. 執(zhí)行 AssetsImport PackageCustom Package 命令添加第一人稱(chēng)資源。

  1. 選中第一人稱(chēng)資源后單擊 Import 按鈕導(dǎo)入該資源。

  1. 在 Project 視圖中搜索 first person controller,將其添加到 Hierarchy 視圖中,并擺放到平面上合適的位置。

  1. 因?yàn)榈谝蝗朔Q(chēng)資源自帶攝像機(jī),因此需要關(guān)掉場(chǎng)景中的攝像機(jī)。

以下第9-10步添加觸發(fā)器。

  1. 選中 treasure,為 treasure 對(duì)象添加 Box Collider,并勾選 Is Trigger 屬性。

  1. 編寫(xiě)腳本 "Triggers.cs"。

    using UnityEngine;
    using System.Collections;
    public class Triggers:MonoBehaviour{
        void OnTriggerEnter(Collider other){
            if(other.tag=="Pickup"){
                Destroy(other.gameObject);
            }
        }
    }

  1. Triggers 腳本鏈接到 first person controller 上。

  1. treasure 添加標(biāo)簽 Pickup。

以下第13-14步開(kāi)始修改腳本。

  1. 修改腳本。

    using UnityEngine;
    using System.Collections;
    public class Triggers:MonoBehaviour{
        public static int temp_Num=0;
        void OnTriggerEnter(Collider other){
            if(other.tag=="Pickup"){
                temp_Num++;
                Destroy(other.gameObject);
            }
        }
        void OnGUI(){
            if(temp_Num==5)
            if(GUI.Button(new Rect(Screen.width/2f, Screen.height/2f, 100, 50),"play again")){
                temp_Num=0;
                Application.LoadLevel("migong");
            }
        }
    }

  1. 將場(chǎng)景添加到 Build Settings 中。

以下第15步開(kāi)始添加計(jì)時(shí)功能。

  1. 完善代碼。

    using UnityEngine;
    using System.Collections;
    public class Triggers:MonoBehaviour{
        public static int temp_Num=0;
        public int parachuteNum;
        int timer;
        int time_T;
        bool isWin=false;
        bool isLose=false;
        void Start(){
            Time.timeScale=1;
            GameObject[]objs=GameObject.FindGameObjectsWithTag("Pickup");
            parachuteNum=objs.Length;
            time_T=(int)Time.time;
        }
        void Update(){
            timer=20-(int)Time.time+time_T;
            if(temp_Num==parachuteNum&&timer!=0){
                isWin=true;
            }
            if(timer==0&&temp_Num!=parachuteNum){
                isLose=true;
            }
        }
        void OnTriggerEnter(Collider other){
            if(other.tag=="Pickup"){
                temp_Num++;
                Destroy(other.gameObject);
            }
        }
        void OnGUI(){
            GUI.Label(new Rect(0, 0, 100, 50), timer.ToString());
            if(isWin==true||isLose==true){
                Time.timeScale=0;
                if(GUI.Button(new Rect(Screen.width/2f, Screen.height/2f, 100, 50), "play again")){
                    isWin=false;
                    isLose=false;
                    temp_Num=0;
                    Application.LoadLevel("migong");
                }
            }
        }
    }

  1. 進(jìn)行測(cè)試。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)