• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > Unity 3D物理管理器(Physics Manager)

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Unity 3D 集成开发环境作为一个优秀的游戏开发平台,提供了出色的管理模式,即物理管理器(Physics Manager)。

物理管理器管理项目中物理效果的参数,如物体的重力、反弹力、速度和角速度等。

在 Unity 3D 中执行 Edit→Project Settings→Physics 命令可以打开物理管理器,如下图所示。

Unity 3D物理管理器

可以根据需要通过调整物理管理器中的参数来改变游戏中的物理效果,具体参数如下表所示。

参 数含 义功 能
Gravity重力应用于所有刚体,一般仅在 Y 轴起作用
Default Material默认物理材质如果一个碰撞体没有设置物理材质,将采用默认材质
Bounce Threshold反弹阈值如果两个碰撞体的相对速度低于该值,则不会反弹
Sleep Velocity休眠速度低于该速度的物体将进人休眠
Sleep Angular Velocity休眠角速度低于该角速度的物体将进人休眠
Max Angular Velocity最大角速度用于限制刚体角速度,避免旋转时数值不稳定
Min Penetration For Penalty最小穿透力设置在碰撞检测器将两个物体分开前,它们可以穿透 多少距离
Solver Iteration Count迭代次数决定了关节和连接的计算精度
Raycasts Hit Triggers射线检测命中 触发器如果启用此功能,在射线检测时命中碰撞体会返回一 个命中消息;如果关闭此功能,则不返回命中消息
Layer Collision Matrix层碰撞矩阵定义层碰撞检测系统的行为

综合案例:迷宫夺宝

案例构思

迷宫夺宝类游戏是常见的游戏类型,玩家在限定的时间内,在迷宫中寻找宝箱从而达到通关的目的。

本项目旨在通过场景虚拟漫游,寻找迷宫中潜藏的宝箱,当靠近宝箱时收集它,实现碰撞检测功能。

案例设计

本案例在 Unity 3D 内创建一个三维迷宫场景,场景内分散着若干个宝箱,游戏玩家需要在规定的时间内找到宝箱,靠近并收集它,最终通关。

项目实施

1) 搭建迷宫场景

步骤 1):创建新项目,并将场景命名为 migong。

步骤 2):创建游戏对象。执行菜单栏中的 GameObject→3D Object→Plane 命令,创建平面,并赋予材质。

执行 GameObject→3D Object→Cube 命令创建若干个盒子,构成迷宫场景,如下图所示。

迷宫场景顶视图

步骤 3):导入模型资源。从 Unity 3D 商店中选择 3D 模型资源并加载到场景中,将其命名为 treasure,如下图所示。

加载3D模型资源

步骤 4):将模型资源导入到 Hierarchy 视图中,如下图所示。

场景效果图

步骤 5):执行 Assets→Import Package→Custom Package 命令添加第一人称资源,如下图所示。

添加资源

步骤 6):选中第一人称资源后单击 Import 按钮导入该资源,如下图所示。

导入第一人称资源

步骤 7):在 Project 视图中搜索 first person controller,将其添加到 Hierarchy 视图中,并摆放到平面上合适的位置,如下图所示。

摆放第一人称资源

步骤 8):因为第一人称资源自带摄像机,因此需要关掉场景中的摄像机。

2) 添加触发器

步骤 9):选中 treasure,为 treasure 对象添加 Box Collider,并勾选 Is Trigger 属性,如下图所示。

添加触发器

步骤 10):编写脚本 Triggers.cs,代码如下。
using UnityEngine;using System.Collections;public class Triggers:MonoBehaviour{    void OnTriggerEnter(Collider other){        if(other.tag=="Pickup"){            Destroy(other.gameObject);        }    }}
步骤 11):将 Triggers 脚本链接到 first person controller 上。

步骤 12):为 treasure 添加标签 Pickup。

3) 添加计数功能

步骤 13):修改脚本。
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");        }    }}
步骤 14):将场景添加到 Build Settings 中,如下图所示。

项目发布图

4) 添加计时功能

步骤 15):完善代码,如下所示。
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");            }        }    }}
步骤 16):单击 Play 按钮进行测试,效果如下图所示。

项目测试效果1

项目测试效果2
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 cocos2d-x-35的android移植问题
  • 2017-06-05 一款高性能游戏服务器引擎的介绍ProudNet
  • 2017-06-05 Unity3D新版本的Animation系统怎么修改Material的Offset属性?
  • 2022-04-30Unity 3D Color控件
  • 2017-06-05 CocosCreaterTildmap错位啊啊,大神们,是什么原因啊??
  • 2022-04-30Unity 3D创建项目,并添加游戏物体和游戏组件
  • 2017-06-05 C#winform中MicrosoftJet数据库引擎找不到对象'xy-zy2012‘
  • 2017-06-05 unity平移物体
  • 2017-06-05 为什么D3D9!Direct3DShaderValidatorCreate9这个函数没有参数呢?
  • 2022-04-30Unity 3D人形角色动画(Avatar)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java用Cocos写游戏的程序,靠谱吗?写游戏用什么语言比较敏接??
    • 刚入行cocos2d-x手游开发,怎么才能快速提高自己,提高工资
    • 项目代码中,诡异的摄像机,希望能够将摄像机按照现在的视线水平移动,求解
    • u3d渲染深度调整很有用。记录下。
    • unity访问安卓手机本地资源(如图片、视频)
    • cocos2d-x的方向识别问题,只能左下,哪里错了吗?
    • 哈哈,Unity学习笔记全面来袭,请大家多多关注!
    • UGUI-button问题,切换状态的时候,声音没办法播放?
    • cocos2d粒子特效问题
    • unity3d官方网站为什么看不了教程视频,浏览器问题吗,需要谷歌翻墙吗?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有