标签:插件 ShakeType 振动 Vector3 transform Unity Random shakeRate public
Unity简单插件☞物体振动
可通过切换shakeType 的值,切换物体的振动方向
脚本如下所示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shake : MonoBehaviour
{
public enum ShakeType
{
AxesX = 0,
AxesY = 1,
AxesZ = 2,
AxesXYZ=3,
}
public ShakeType shakeType = ShakeType.AxesX;
public Vector3 shakeRate = new Vector3(0.02f, 0.02f, 0.02f);//shakeRate:抖动幅度
public float shakeTime = 0.08f;//shakeTime:抖动总时长
public float shakeDertaTime = 0.08f;//shakeDertaTime:抖动间隔
public void ShakeObject()
{
StartCoroutine(Shake_Coroutine());
}
public IEnumerator Shake_Coroutine()
{
var oriPosition = gameObject.transform.position;
for (float i = 0; i < shakeTime; i += shakeDertaTime)
{
switch (shakeType)
{
case ShakeType.AxesX:
gameObject.transform.position = oriPosition +
Random.Range(-shakeRate.x, shakeRate.x) * Vector3.right;
break;
case ShakeType.AxesY:
gameObject.transform.position = oriPosition +
Random.Range(-shakeRate.y, shakeRate.y) * Vector3.up;
break;
case ShakeType.AxesZ:
gameObject.transform.position = oriPosition +
Random.Range(-shakeRate.z, shakeRate.z) * Vector3.forward;
break;
case ShakeType.AxesXYZ:
gameObject.transform.position = oriPosition +
Random.Range(-shakeRate.x, shakeRate.x) * Vector3.right +
Random.Range(-shakeRate.y, shakeRate.y) * Vector3.up +
Random.Range(-shakeRate.z, shakeRate.z) * Vector3.forward;
break;
default:
break;
}
yield return new WaitForSeconds(shakeDertaTime);
}
gameObject.transform.position = oriPosition;
}
void Start () {
}
void Update ()
{
ShakeObject();
}
}
柚子味的小柠檬
发布了29 篇原创文章 · 获赞 14 · 访问量 5408
私信
关注
标签:插件,ShakeType,振动,Vector3,transform,Unity,Random,shakeRate,public 来源: https://blog.csdn.net/qq_43511290/article/details/104425324
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。