unity3d教程运行物理机制
首先,我们将把Hooke定律写Euler方法结合在一起找到新坐标、加速和速度。
Hooke定律是F=kx,这里的F是指由水流产生的力(记住,我们将把水体表面模拟为水流),k是指水流的常量。x则是位移。我们的位移将成为每一个节点的y坐标减去节点的基本高度。
下一步,我们将加入一个与力的速度成比例的阻尼因素来削弱力unity3d编写代码例如以下:
for (int i = 0; i < xpositions.Length ; i++)
{
float force = springconstant * (ypositions[i] – baseheight) + velocities[i]*damping ;
accelerations[i] = -force;
ypositions[i] += velocities[i];
velocities[i] += accelerations[i];
Body.SetPosition(i, new Vector3(xpositions[i], ypositions[i], z));
}
Euler方法非常easy,我们仅仅要向速度加入加速,向每帧坐标添加速度。
注:我仅仅是如果每一个节点的质量为1,但你可能会想用:
1
accelerations[i] = -force/mass;
如今我们将创造波传播。下面节点是依据Michael Hoffman的教程调整而来的:
1
2
float[] leftDeltas = new float[xpositions.Length];
float[] rightDeltas = new float[xpositions.Length];
在此。我们要创造两个阵列。针对每一个节点,我们将检查之前节点的高度,以及当前节点的高度,并将二者区别放入leftDeltas。
之后。我们将检查兴许节点的高度与当前检查节点的高度,并将二者的区别放入rightDeltas(我们将乘以一个传播常量来添加全部值)。
for (int j = 0; j < 8; j++)
{
for (int i = 0; i < xpositions.Length; i++)
{
if (i > 0)
{
leftDeltas[i] = spread * (ypositions[i] – ypositions[i-1]);
velocities[i - 1] += leftDeltas[i];
}
if (i < xpositions.Length – 1)
{
rightDeltas[i] = spread * (ypositions[i] – ypositions[i + 1]);
velocities[i + 1] += rightDeltas[i];
}
}
}
unity3d教程运行物理机制的更多相关文章
- (转)【风宇冲】Unity3D教程宝典之Blur
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 BlurBlur模糊其实理解了以后非常简单.核心原理就是 1个点的颜色 并不用该点的颜色,而是用该点周围 ...
- Unity3D教程宝典之Web服务器篇:(第三讲)PHP的Hello World
转载自风宇冲Unity3D教程学院 引言:PHP是比较简单的编程语言,即使没接触过的也可以现学现用.PHP教程文档PHP100视频教程 Unity接 ...
- Unity3D教程宝典之Web服务器篇:(第二讲)从服务器下载图片
转载自风宇冲Unity3D教程学院 从Web服务器下载图片 上一讲风宇冲介绍了wamp服务器及安装.这回介绍如何从服务器下载内容至 ...
- Unity3D教程:无缝地形场景切换的解决方法
http://www.unitymanual.com/6718.html 当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100 100 100坐标 ...
- Pytest权威教程24-Pytest导入机制及系统路径
目录 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 独立测试模块及conftest.py文件 调用通过python -m pytest调用p ...
- iOS开发之runtime运行时机制
最近参加三次面试都有被问到runtime,因为不太懂runtime我就只能支支吾吾的说点零碎.我真的好几次努力想看一看runtime的知识,因为知道理解它对理解OC代码内部变化有一定帮助,不过真心觉得 ...
- runtime 运行时机制 完全解读
runtime 运行时机制 完全解读 目录[-] import import 我们前面已经讲过一篇runtime 原理,现在这篇文章主要介绍的是runtime是什么以及怎么用!希望对读者有所帮助! ...
- [Spark内核] 第35课:打通 Spark 系统运行内幕机制循环流程
本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每 ...
- (转)【风宇冲】Unity3D教程宝典之AssetBundles:第二讲
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 AssetBundles第二讲:AssetBundles与脚本 所有Unity的As ...
随机推荐
- python 数据的基本类型(字符串)
python 基础 ascii:字母,数字,特殊字符:1个字节(byte) 8个字位(bit)unicode: 16位两个字节,升级32个字节 4个字位utf-8:最少一个字节 8个表示. 英文 8字 ...
- PIE加载自定义服务数据详细介绍
这段时间我一直在研究如何用PIE加载在线地图服务,遇到了许多问题,多亏了技术员小姐姐的帮助,才让我能正确加载ArcGIS Online在线服务.天地图在线地图和谷歌在线地图.我是根据博客园PIE官方博 ...
- webpack-1
1.webpack 安装新项目npm install --save-dev webpack如果版本较老,在package,json中找到版本号,修改成你要的版本号,在删除node-model文件夹,执 ...
- Java基础7一面向对象
1.构造方法: (1)定义:方法名称必须和类名相同,没有返回值,也没有void (2)语法: [访问修饰符] 类名(){ } (3)作用:创建对象.初始化成员变量. (4)构造方法的分类: A.无参数 ...
- Android 从imageview中获得bitmap的方法
第一种: 使用setDrawingCacheEnabled()和getDrawingCache()这两种方法,第一个是为了设置是否开启缓存,第二个就可以直接获得imageview中的缓存,一般来说需要 ...
- 最影响APP软件质量和成本的三个方面。希望大家一定要记在心里!
1.功能的开发方式 现在市场上存在的几种开发方式如下: a.web网页加壳生成APP web网页加壳生成APP的开发方式,先花几百块钱买个现成的手机网站模板,在加壳打包一个APP只需要5分钟,但是做出 ...
- jquery mobile在移动设备上显示太大问题
head里边加入这个会让客户端元素很大...宽度都是device-width,不过比较大! <meta name="viewport" content="width ...
- In-Out Parameters inout keyword
You write an in-out parameter by placing the inout keyword right before a parameter’s type. An in-ou ...
- js 正则 测试
var str0 = '2013-6-7()'; var AAAAADD = str0.match(/(\d)/g); //11个空字符串 //["2", "0" ...
- 用shell编写一个三角形图案
第一种方法 #!/bin/bash read -p "请输入层数: " n for (( i=1; i<=$n;i++ ))do for (( j=n; j>=i; ...