unity3d学习笔记三十六:物理引擎——刚体

wzzkaifa wzzkaifa     2022-09-03     606

关键词:

物理引擎就是游戏中模拟真是的物理效果。如两个物体发生碰撞,物体自由落体等。在unity中使用的是NVIDIA的physX,它渲染的游戏画面很逼真。


刚体

刚体是一个很很中要的组件。

默认情况下,新创的物体是不具备物理效果的,而刚体组件能够给物体加入一些常见的物理属性。比方说:质量。摩擦力。碰撞等。

假设对象加入了刚体组件。那么它将感应物理引擎中的一切物理效果。


简单的使用下

首先穿件一个游戏对象,接着在hierarchy视图中选择创建的游戏对象。然后在unity导航菜单条中选择component——physics——rigidbody就可以。以下将创建3个立方体。将其放置在凌空地面上。

并给当中的一个立方体加入刚体。执行后发现红色的立方体感应了物理效果,掉下来了。而其它的两个依然停留在原地。

技术分享


技术分享

刚体的属性:

mass:质量。数值越大物体下落越快,尽量不超过10,不然会显得不真实。

drag:阻力。数值越大物体速度减慢就越快。

angular drag:角阻力。数值越大自转速度减慢就越快。

use gravity:是否使用重力。

is kinematic:是否受物理影响。

interpolate:设置图像差值。

collision detection:碰撞监測。

constrains:冻结,停止某个轴向感应物理引擎的效果

freeze position:冻结X轴。Y轴,Z轴,方向。

freeze rotation:冻结X轴。Y轴。Z轴,旋转。


物理管理器

在物理管理器中,能够设置整个项目全部的物理效果。比方说重力。反弹力,速度等。

在菜单导航栏中。选择edit——project setting——physics就可以打开physics manager。

例如以下图:

技术分享

gravity:重力,默认下物体受Y轴向下的重力为9.8 N,可改动三个轴的受力方向。

default material:默认物理材质。

bounce threshold:反弹值。

sleep velocity:睡眠速度,当速度低于睡眠速度时,它保持精巧状态。

sleep angular velocity:睡眠角速度,当角速度低于睡眠速度时。自身不旋转。

max angular velocity:最大角速度。

min penetration for penalty:用于物体与物体之间碰撞后最小穿透力。

solver iteration count:迭代数量,默认值为7.

raycasts hit triggers:是否启动命中触发器。

layer collision matrix:图层碰撞矩阵。


刚体组件能够受力的作用,比方给刚体一个向X轴的力,那么刚体将沿着X轴向前运动。unity中力的方式有两种:普通的力,须要设定力的方向和大小。目标位置力。须要设置目标点的位置,该物体将朝向这个目标位置施加力。

接下来做一个样例来说明。共放置两个球对象。点击普通力后,小球像被踢了一脚。

点击位置力。小球将被施加一个朝向目标的力。

代码:

using UnityEngine;
using System.Collections;

public class Script_06_02 : MonoBehaviour
{
	
	//施加普通力的对象
	GameObject addFrceObj = null;
	//施加目标位置力的对象
	GameObject addPosObj = null;
	//目标对象
	GameObject cubeObj = null;
	
	// Use this for initialization
	void Start () 
	{
		//获取施加普通力的对象
		addFrceObj = GameObject.Find("Sphere0");
		//获取施加目标位置力的对象
		addPosObj = GameObject.Find("Sphere1");
		//获取目标对象
		cubeObj= GameObject.Find("Cube");
	}
	
	void OnGUI() {
		
		if(GUILayout.Button("普通力?",GUILayout.Height(50)))
		{
			//施加一个力。X轴方向力度为1000,Y轴方向力度为1000
			addFrceObj.rigidbody.AddForce (1000, 0, 1000);
		}
		
		if(GUILayout.Button("位置力",GUILayout.Height(50)))
		{
			//施加一个位置力。物体将会朝向这个位置发力移动。力的模式为冲击力。

Vector3 force = cubeObj.transform.position - addPosObj.transform.position; addPosObj.rigidbody.AddForceAtPosition(force,addPosObj.transform.position,ForceMode.Impulse); } } }


执行:

技术分享

技术分享












unity3d学习笔记三十:游戏元素——游戏地形

游戏地形在游戏的世界中,必然会有非常多丰富多彩的游戏元素融合当中。它们种类繁多。作用也不大同样。一般对于游戏元素可分为两种:经经常使用。不经经常使用。经常使用的元素是游戏中比較重要的元素。一般须要使用... 查看详情

使用新的物理模拟引擎加速强化学习

强化学习(RL)是一种流行的教学机器人导航和操纵物理世界的方法,其本身可以简化并表示为刚体之间的交互1(即,当对它们施加力时不会变形的固体物理对象)。为了便于在实际时间内收集训练数据,RL通常利用模拟,其中任... 查看详情

关于unity中物理引擎的使用

物理引擎控制刚体,刚体上面贴上图片,所以看起来就是游戏运行起来的状态物理世界计算刚体的运行状态,通过贴图显现出运算结果。一、物理引擎1:Unity2D物理引擎基于Box2D封装而成;2:物理引擎模拟物理运动和计算,物理引擎... 查看详情

unity物理引擎浅谈

刚体:刚体是模拟物理效果的对象。添加了刚体组件的游戏物体,会受重力影响,可以被玩家四处推动,或者直接用脚本添加力给对象来让他四处移动。通常情况下,对同一物体,要么通过刚体操纵,要么通过变换(transform)操... 查看详情

创建简单的nape刚体

在认识Nape空间里,看我们了解了这个2D物理引擎,并学习了如何创建一个基本的Nape应用,今天我们来学习一下如何创建一些简单的Nape刚体。运动与静止的刚体和Box2D一样,Nape中的也分为静止和运动刚体,对应静止的刚体将不进... 查看详情

unity3d中ontriggerenter(colliderother)和oncollisionenter(collisionother)对比

参考技术A两者都有碰撞体collider(BoxCollider,SphereCollider,CapsuleCollider等)如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEn... 查看详情

蓝鸥unity开发基础三课时14刚体

【蓝鸥Unity开发基础三】课时14刚体一、刚体物理引擎:物理引擎能够真实的模拟物理效果Unity中使用的是NVIDIA的PhysX物理引擎在Unity中使用Rigidbody让游戏对象受物理引擎控制650)this.width=650;"src="http://s2.51cto.com/wyfs02/M01/87/CA/wKioL1fh-X-z... 查看详情

unity学习笔记(碰撞器与触发器)(代码片段)

unity学习笔记(碰撞器与触发器)文章目录前言一、Colliders表格二、PhysX三、碰撞器与触发器1.概念2.碰撞器3.触发器四、实验前言当两个对象碰撞时,可能会发生许多不同的脚本事件,这些事件具体取决于碰撞对象... 查看详情

unity3d使用时发现的问题及解决方法(触发碰撞条件)

...,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。碰撞器:一群组件,它包含了很多种类,比如:BoxCollider(盒碰撞体),MeshCollider(... 查看详情

003-unity3d物理引擎简介以及示例

...、跌落等反应的引擎,通过ballence、愤怒的小鸟等理解。Unity3D的物理引擎使用的是Nvidia的PhysX。  物理引擎是一个计算机程序模拟牛顿力学模型,使用质量、速度、摩擦力和空气阻力等变量。可以用来预测这种不同情况下的效... 查看详情

《游戏引擎架构》笔记十二

碰撞及刚体动力学 一些碰撞/物理系统:http://www.gamedev.net/community/forums/topic.asp?topic_id=463024I-Collide:http://cs.unc.edu/I-COLLIDESWIFT:ODE:http://www.ode.orgBullet:http://code.google.com/p/bullet/TrueAxi 查看详情

学习笔记第十六节课

lvm讲解lvm有很大的便利性,可以方便的扩容和缩容磁盘的空间。(但是也有局限性)一旦出现问题,磁盘使用lvm,文件系统坏了,数据没了,恢复数据的时候很麻烦。做个实验:创建三个磁盘分区,(这里要注意下ID是83,说明... 查看详情

学习三十六

11.10/11.11/11.12安装PHP511.13安装PHP7php中mysql,mysqli,mysqlnd,pdo到底是什么http://blog.csdn.net/u013785951/article/details/60876816查看编译参数http://ask.apelearn.com/question/1295安装php5PHP官网www.php.net当前主流版本为5.6/7 查看详情

unity3d学习教程7基本应用与添加刚体

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03创建一个立方体按F2 改名名字改完后修改位置把它放在000处... 查看详情

chipmunk物理引擎的基本概念和基本用法

chipmunk是一个开源2D物理引擎,项目主页:http://code.google.com/p/chipmunk-physics/ 工作需要研究了一下,这个引擎的资料还是不多,我阅读了所有的文档,7个demo,和一个教学程序,得出如下一些理解。一,基本概念space: 发生物... 查看详情

scanvenger游戏制作笔记unity3d创建对墙体的攻击(代码片段)

Scanvenger游戏制作笔记(三)Unity3D创建对墙体的攻击前言一、给墙体增加一个刚体二、添加标签以便确认三、脚本四、Wall的脚本五、攻击动画系列链接前言本文章是我学习SIKI学院Scanvenger项目所做笔记,原视频请自行... 查看详情

godot物理引擎2d

...要直接移动物体,而是给物体施加力,否则会破坏其中的物理系统。当刚体不运动后,物体会保持静止,类似静态物一样,直到再次受力。动态物体,不会被物理引擎约束,可以随意控制位置,能和刚体和静态物相互碰撞。移动... 查看详情

机器学习面试题

题目一题目二题目三题目四题目五题目六题目七题目八题目九题目十 题目十一题目十二题目十三题目十四题目十五题目十六题目十七题目十八题目十九题目二十题目二十一题目二十二题目二十三题目二十四 题目二十五题... 查看详情