unity3d教程运行物理机制
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入门教程】物理引擎之碰撞解析
Unity3D内置物理引擎,可以模拟物理效果.典型的一个物理效果就是碰撞.本文将会针对最简单的案例讲述Unity3D的碰撞规律. 1 碰撞规律 首先在场景中创建一个Sphere和一个Cube,它们都是 ...
- 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图
这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...
- Unity3D教程:动画融合、动画层、动画混合、附加动画、程序动画、动画重放和取样
原帖地址:http://www.unitymanual.com/5323.html 动画脚本 Animation Scripting Unity's 动画系统允许你创建一个漂亮的动画蒙皮角色,动画系统 ...
- Unity3D教程:如何使用脚本进行控制
首先,选择GameObject->Create Other->Cube创建一个立方体.我们将该场景另存为TankWar0.2做好版本控制.调整正方体和摄像机的位置,大致能在屏幕中看到摄像机 ...
- Unity3D教程宝典之Web服务器篇:(第二讲)从服务器下载图片
转载自风宇冲Unity3D教程学院 从Web服务器下载图片 上一讲风宇冲介绍了wamp服务器及安装.这回介绍如何从服务器下载内容 ...
- Unity3D教程:简单触发器实现自动开关门
首先确保你已经对门进行了动画的设置. 选择Window->Animation打开动画窗口,选中需要添加动画的门之后点击红色按钮创建新动画. 选中一个需要添加动画的要素之后(比如Postion.x ...
- unity3d用sever还是php,unity3d教程
对unitye3d的学者来讲,学习Unity3D教程,必须经过Photon服务器入门,那么小编下面为大家分享讲解教程的内容. 首先去PhotonServer SDK下载服务器端SDK.解压出来是四个文 ...
- Unity3D教程:简单的碰撞检测
需求:当立方体Cube碰到地面Plane的时候,输出碰撞物体的名称,则表述检测到立方体碰撞了地面. 1.搭建一个简单的场景. 在新的工程中选择File->new Scene创建新的场景.然后在该 ...
- 【Unity3D 教程系列第 15 篇】本地数据持久化之 Playerprefs 类
这是[Unity3D 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:什么是 PlayerPrefs 类 二:PlayerPrefs 类中的静态方法 1:写入数据 2:读取数据 ...
最新文章
- ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020
- [转载]hadoop集群默认配置和常用配置
- Xcode7 项目转 Xcode6 时 出现问题
- 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter
- ORACLE 临时表空间使用率过高的原因及临时解决方案
- What?你还搞不懂什么是物体检测?
- Excel文件读取的两种方式
- php双线切换线路,双线路策略路由和脚本备份切换
- 计算机视觉(CV)中HOG算法的主要步骤
- 腾讯区块链专利申请量排名全国第一;摩拜超20.56万单车被破坏;Nginx 1.17.7发布 | 极客头条...
- t检验自由度的意义_t检验的原理是什么?有什么意义?谢谢
- Hbase roekey设计入门
- 解决win10cmd乱码
- 太经典了,不转不行淘宝上面的对话
- 第6集丨Persistent Objects 和 Caché SQL
- 狗狗有关的知识tips
- 单片机中使用三极管驱动蜂鸣器
- 《实用python程序设计》练习题:向量点积计算
- Python(高级FTP作业)
- 计算机默认桌面位置,怎么更改电脑桌面存储位置?