perlinnoise是unity中Mathf下的一个函数,需要两个float参数x和y进行采样,返回一个0-1的float型。

项目里经常要随机摇摆某些东西,比如摄像机,某个随机运动的目标等等,都可以用这个函数来搞定。

下面是代码,挂载到对象上即可使用,目前返回值是一个Vector2,需要的话可以在方法里可以多加一个返回V3

using UnityEngine;

public class wiggle : MonoBehaviour
{
[Range(, )]
public float amplitude = ; //摇摆的幅度
[Range(0.00001f, 0.99999f)]
public float frequency = 0.98f; //频率
[Range(, )]
public int octaves = ; //频程迭代次数
[Range(0.00001f, )]
public float hold = 0.2f; //保持(限制)效果 void Update()
{
transform.position = Shake2D(amplitude, frequency, octaves, hold, Time.time);
} public static Vector2 Shake2D(float amplitude, float frequency, int octaves, float holding, float time)
{
float valX = ;
float valY = ; float iAmplitude = ;
float iFrequency = frequency;
float maxAmplitude = ;
float lacunarity = ; for (int i = ; i < octaves; i++)
{
//计算频率
float noiseFrequency = time / ( - iFrequency) / ; //采样x和y的值
float perlinValueX = Mathf.PerlinNoise(noiseFrequency, 0.5f);
float perlinValueY = Mathf.PerlinNoise(0.5f, noiseFrequency); //*2 - 1 是为了保持参数范围是从 -1 到 1.
perlinValueX = perlinValueX * - ;
perlinValueY = perlinValueY * - ; valX += perlinValueX * iAmplitude;
valY += perlinValueY * iAmplitude; //振幅,计算最大振幅以便归一化
maxAmplitude += iAmplitude; iAmplitude *= holding;
iFrequency *= lacunarity;
} //归一化
valX /= maxAmplitude;
valY /= maxAmplitude; //扩大幅度
valX *= amplitude;
valY *= amplitude; return new Vector2(valX, valY);
}
}

Unity中利用柏林噪声(perlinnoise)制作摇摆效果的更多相关文章

  1. Unity中使用柏林噪声生成地图

    孙广东  2017.3.27 http://blog.csdn.NET/u010019717 主要是利用Unity的 Mathf.PerlinNoise   函数(柏林噪声)的不同寻常的功能. htt ...

  2. unity中利用纯物理工具制作角色移动跳跃功能

    using System.Collections;using System.Collections.Generic;using UnityEngine; public class Player : M ...

  3. Unity中利用委托与监听解耦合的思路

    这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需 ...

  4. Unity中利用光线投射实现摄像机拉近追踪对象

    项目中要求实现摄像机跟踪人物移动,并且可以水平360°,上下接近180°的自由旋转.这些操作网上已近有很多版本的实现,在此不再赘述.我在此想说的是,当摄像机移动到场景边界,或者触碰到场景中的障碍物的时 ...

  5. 关于Unity中的旋涡特效的制作(捕鱼达人3技术)(专题八)

    Mesh--材质--Shader 1: Mesh 是网格,包括顶点,法线,纹理坐标,切线,三角形.在每一个3D模型节点里面,有一个Mesh Filter组件来提取模型里面的网格数据;2: Shader ...

  6. unity3d 柏林噪声 PerlinNoise 规律 算法

    测试 每个小数值取100次 print(0.1); LaTest3(0.1f, 0.1f); print("Max:" + La.Max() + "|Min:" ...

  7. Unity3D题目,Unity中利用GUI输出九九乘法表

    网上看到的这题,下面贴出源代码 using UnityEngine;using System.Collections; public class c99 : MonoBehaviour//C#脚本名: ...

  8. Android中利用Camera与Matrix实现3D效果详解

    本文行文目录: 一.Camera与Matrix初步认识 二.Camera与Matrix旋转效果拆分介绍 三.Camera与Matrix实现立体3D切换效果 [csdn地址:http://blog.cs ...

  9. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

随机推荐

  1. Android后台数据接口交互实现注册功能

    首先,在ecplise里面新建一个叫做TestServices的web工程.在WebContent--WEB-INF--libs文件夹下导入两个jar包:mysql-connector-java-6. ...

  2. IDEA的基本使用技巧

    博主在大学里学习的专业是计算机科学与技术,在大三的时候才开始接触 “加瓦”,学习加瓦首先就需要一个运行环境,因为受到了老师们的影响,我第一个编辑JAVA的软件环境便是Eclipse,在学校里学习和使用 ...

  3. linux7手动添加systemctl启动程序

    1.路径 [root@angrymushrooms01 system]# pwd /usr/lib/systemd/system 2.脚本内容 vim xxx.service ------------ ...

  4. Springboot快速入门篇,图文并茂

    Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...

  5. C#设计模式之6-适配器模式

    适配器模式(Adapter Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/399 访问. 适配器模式属 ...

  6. C#LeetCode刷题之#771-宝石与石头(Jewels and Stones)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3812 访问. 给定字符串J 代表石头中宝石的类型,和字符串 S代 ...

  7. HahMap(jdk=1.8)源码解读

    简介:岁月磨平了人的棱角,让我们不敢轻易的去放手,即使它在你心中并不那么重要,你依旧害怕失去它,不是舍不得,是内心的迷茫. 一 : 创建HashMap HashMap<Object, Objec ...

  8. 初始化itable

    在InstanceKlass::link_class_impl()方法中完成方法连接后会继续初始化vtable与itable,之前已经介绍过vtable与itable,并且在类解析过程中已经完成了大小 ...

  9. yb课堂之压力测试工具Jmeter5.X 实战《二十二》

    目前常用的测试工具对比 LoadRunner 性能稳定,压测结果及细粒度大,可以自定义脚本进行压力,但是太过于重大,功能比较繁多 Apache AB(单接口压测最方便) 模拟多线程并发请求,ab命令对 ...

  10. rabbitmq python demo 参考链接地址

    链接地址: https://docs.openstack.org/oslo.messaging/latest/reference/server.html https://www.cnblogs.com ...