Unity之一天一个技术点(十六)---狙击镜呼吸效果

我们正在做一个狙击游戏,然后要模仿一个狙击镜打开时候呼吸效果,也就是狙击镜会上下左右平缓位移,我参考网上的脚本又更改了一下,你可以直接挂在你的镜头上,然后屏幕中间放一个瞄准镜,就能看到很酷的效果~

public void Noise()

{

noisedeltaX += ((((Mathf.Cos(Time.time) * Random.Range(-nosieMaxRange, nosieMaxRange) / 5f) * nosieMaxSpeed) - noisedeltaX) / 100);

noisedeltaY += ((((Mathf.Sin(Time.time) * Random.Range(-nosieMaxRange, nosieMaxRange) / 5f) * nosieMaxSpeed) - noisedeltaY) / 100);

rotationXtemp += (noisedeltaX * breathHolderVal);

rotationYtemp += (noisedeltaY * breathHolderVal);

rotationX += ((rotationXtemp - rotationX) / 3) ;

rotationY += ((rotationYtemp - rotationY) / 3) ;

if (rotationX >= 360)

{

rotationX = 0;

rotationXtemp = 0;

}

if (rotationX <= -360)

{

rotationX = 0;

rotationXtemp = 0;

}

rotationX = ClampAngle(rotationX, -180, 180);

rotationY = ClampAngle(rotationY, -60, 60);

rotationYtemp = ClampAngle(rotationYtemp, -60, 60);

Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.left);

Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.forward);

transform.localRotation = transform.localRotation * xQuaternion * yQuaternion;

}

static float ClampAngle(float angle, float min, float max)

{

if (angle <= -360.0f)

angle += 360.0f;

if (angle >= 360.0f)

angle -= 360.0f;

return Mathf.Clamp(angle, min, max);

}

时间: 2024-10-23 21:09:11

Unity之一天一个技术点(十六)---狙击镜呼吸效果的相关文章

Unity之一天一个技术点(六)---在线JS转C#代码

今天分享一个很有用的东西 在线JS转C#代码 http://www.m2h.nl/files/js_to_c.php 很多源码搞到了一看哇靠JS的完全不懂,用这个可以帮你搞定~ 经测试,大多数的js语法都能转成c#的,基本上都看的懂,理解起来不算费劲~ 好用就来点个赞啊~

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

在3D游戏世界中,任何一个游戏对象在创建的时候都会附带Transform(变换)组件,并且该组件是无法删除的,也不应该删除.在unity中,Transform面板一共有3个属性: Position  (位置) Rotation(旋转) Scale(缩放) 这三个值都是用来调整游戏对象在游戏界面中的位置,状态等相关参数. Position  (位置) 任何一个游戏对象的三维坐标都保存在Vector3容器中,该容器记录对象在X轴,Y轴,Z轴的坐标.一旦Vector33容器中的坐标发生变化,那么Sce

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

十六、Android 滑动效果汇总

Android 滑动效果入门篇(一)-- ViewFlipper Android 滑动效果入门篇(二)-- Gallery Android 滑动效果基础篇(三)-- Gallery仿图像集浏览 Android 滑动效果基础篇(四)-- Gallery + GridView Android 滑动效果进阶篇(五)-- 3D旋转 Android 滑动效果进阶篇(六)-- 倒影效果 ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,

Unity之一天一个技术点(十九)--初学委托

委托这个对于C#初学者比较头疼,我也是看了半天资料才稍微弄懂一点,下面的代码还是挺简单的,也算用了委托这么逼格高的技术了. using UnityEngine; using System.Collections; //三个军衔级别的命令类型// public enum TypeOfCommands { General, Captain, Soldier } public class EventManager : MonoBehaviour { //定义一个通用代理,根据传递类型,发送消息 pub

Unity之一天一个技术点(十)---UI添加粒子特效

最近给UI添加粒子特效时,总是被UI遮挡, 解决方法是: 因为粒子系统的渲染顺序列默认为3000,而NGUI的渲染顺序默认也是从3000开始,当有嵌套的panel时或者Depth更高的panel时,GUI的渲染顺序会高于3000, 解决办法是, 1.修改Ngui中的UIPanel脚本中的默认的RenderQueue, 调整到3000以下,这样就不会遮挡住粒子特效了,当有的窗口需要显示在特效上面时,在检视面板中把该窗口的Renderer Q选项调整为Start At,值为3000以上,就可以解决,

Unity之一天一个技术点(十二)---指南针的实现

指南针的实现(可据镜头旋转改变) 代码如下: 变量简述: compassGUISkin皮肤用来显示指南针贴图 标签Label贴图用来作为指南针背景  Box贴图用来作为箭头贴图 把脚本赋予给主镜头即可 GUI.skin = compassGUISkin; var compassAngle : float = transform.rotation.eulerAngles.y;//得到镜头的y轴旋转角度 var compassDiameter : float = 128; var compassWi

Unity之一天一个技术点(十四)

using UnityEngine; using System.Collections; /** * 备注:本脚本必须赋予主镜头 */ public class CameraRotateAround : MonoBehaviour { public Transform target;//主相机要围绕其旋转的物体 public float distance = 7.0f;//主相机与目标物体之间的距离 private float eulerAngles_x; private float euler

Unity之一天一个技术点(十八)---让敌人缓慢转向,并且跟踪玩家

哦也,公司年会开完就放假,年前不会再更新了~ 提前恭祝大家新年快乐,心想事成~ public Transform target public int moveSpeed public int rotateSpeed private Transform mytransform; void awake (){ mytransform=this.transform; } void Start() { GameObject go=GameObject.FindGameObjectWithTag("Pla