当前位置: 首页 > news >正文

Unity地面震动的效果

有时候需要一个效果,一块巨大的陨石从天而降,这样就需要地面震动一下的震撼效果,这个实现的时候有时候会让地面抖动一下,但更多时候是用相机轻微晃动一下,实现地面的震撼效果。以下是相机震动的代码

using UnityEngine;
using System.Collections.Generic;namespace combat
{public class Shake{class Instance{public Vector2 Position;public Vector2 Direction;public float Timeout;public float Lifetime;public float Strength;public float Angle;public float Speed;}private static List<Instance> m_shakes;static public void Init(){m_shakes = new List<Instance>();}static public void Dispose(){m_shakes = null;}static public void addShake(Vector2 pos, float time, float strength){#if !IS_RELEASEif(ConsoleCommands.ConsoleScreenController.SCREENSHOT_MODE){return;}#endifInstance instance = new Instance();instance.Position = pos;instance.Timeout = time;instance.Lifetime = time;instance.Strength = strength;instance.Angle = 0;instance.Speed = 50;instance.Direction = new Vector2(Random.Range(-1f,1f),Random.Range(-1f,1f));instance.Direction.Normalize();m_shakes.Add(instance);}static public void process(float time){if(m_shakes.Count > 0 && time != 0){Vector2 total = Vector2.zero;for(int c1 = 0; c1 < m_shakes.Count; ++c1){Instance instance = m_shakes[c1];instance.Timeout -= time;if(instance.Timeout <= 0){m_shakes.RemoveAt(c1);--c1;}else{float percentage = instance.Timeout / instance.Lifetime;instance.Angle += instance.Speed * time;float sin = Mathf.Sin(instance.Angle);float amount = instance.Strength * percentage * sin;total += instance.Direction * amount;}}Camera.main.transform.RotateAround(Camera.main.transform.position, Camera.main.transform.right, total.x);Camera.main.transform.RotateAround(Camera.main.transform.position, Camera.main.transform.up, total.y);}}}
}

只要调用addshake就可以实现相机的震动效果,犹如巨石从天而降

有时候也需要一个巨石会一个由大变小的过程砸向远处的过程,如果是3d的物体在3d世界中运动,当然自己会变小,但是若是需要用ui 实现,这需要ui由大变小

这个由大变小的过程就放在Update里面

		void Update(){if (m_Logo != null){float time = Time.deltaTime;if (m_pause > 0)		//等待0.75秒{m_pause -= time;if (m_pause <= 0){m_timeout = 1;m_Logo.SetActive(true);}}if (m_pause <= 0)		//logo从大到小进行播放{if (m_timeout >= 0){m_time += time;m_timeout -= m_time;float percent = Mathf.Clamp01(m_timeout / 1);m_Logo.transform.localScale = Vector3.one * (1 + (1f * percent));if(m_timeout <0 ){Engine.audio.AudioManager.Instance.queue("deployStructure", 0);}}}if (m_pause <= 0 && m_timeout <= 0)		//logo播放完毕,按钮从浅到深着色{if (diaphaneity < 1){diaphaneity += diaphaneityIncreace;SetDiaphaneity(diaphaneity);}}}}

http://www.dtcms.com/a/410744.html

相关文章:

  • Unity Shader变体管理最佳实践
  • 网站开发目的重庆建设工程信息网 官网
  • 镇江网站排名优化费用wordpress推广积分插件
  • 基于51单片机的自习室人数统计系统
  • C4D口红建模核心技巧:优质布线的思路与操作方法
  • 虚拟机管理程序(Hypervisor)
  • 黑盒测试和白盒测试
  • iree 上运行qwen2.5 05b运行效率
  • dw手机网站怎么做软文推广代理平台
  • qq刷赞网站推广软件广告机 东莞网站建设
  • 佛山网站建设原创网站底部版权信息
  • Unity / C# 开发常见问题总结(闭包、协程、事件、GC 等易踩坑)
  • C# 集合框架完全指南:从IEnumerable到ObservableCollection的深度解析
  • 用户研究:用户研究和数据分析的根本联系与区别
  • 网站关键词优化培训jeecg 3.7 网站开发
  • 右键菜单增强工具,自定义系统功能
  • 图像分类入门:从数据到模型的深度学习核心知识解析
  • 攻防世界-Web-PHP2
  • Windows系统Web UI自动化测试学习系列3--浏览器驱动下载使用
  • 00-为什么要系统学习正则表达式?
  • 湖北网站建设检修金融股票类app网站开发
  • C++ 序列容器深度解析:vector、deque 与 list
  • 提供企业网站建设上海公司注册一网通办
  • 高效的技术支持提升用户体验
  • 满山红网站建设做家装的网站有什么
  • 建设部网站社保联网小程序注册平台
  • Mysql中GROUP_CONCAT分组聚合函数的使用以及示例
  • 2025无人机林业行业场景解决方案
  • 化肥网站模板青岛建设集团 招聘信息网站
  • 【在Ubuntu 24.04.2 LTS上安装Qt 6.9.2】