该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

直接用“移动行为”来播放移动音效的做法比较粗暴,后期右复杂需求后会有暴露一些问题,不过目前需求比较简单的话,可以先按这种方式做完。

代码如下

public float rotationSpeed = 3f;

private Rigidbody rigidbody;

public AudioSource audio;

// Use this for initialization

void Start()

{

rigidbody = this.GetComponent();

onFixedUpdate += CheckMove;

}

float speed = 10;

Action onFixedUpdate;

// Update is called once per frame

void FixedUpdate()

{

//float h = Input.GetAxis("Mouse X");

//float v = Input.GetAxis("Vertical");

//rigidbody.velocity = transform.forward * v * speed;

//rigidbody.angularVelocity = transform.up * h * rotationSpeed;

if (onFixedUpdate != null)

onFixedUpdate();

}

//移动所需参数

Vector2 movePara;

//检测移动状态

private void CheckMove()

{

movePara.x = Input.GetAxis("Mouse X");

movePara.y = Input.GetAxis("Vertical");

if (movePara != Vector2.zero && !isMoving)

BeginMove();

if (movePara == Vector2.zero && isMoving)

EndMove();

}

// 是否处于移动状态

private bool isMoving;

// 当前已经移动的时间

private float moveTime = 0;

///开始移动

private void BeginMove()

{

if (isMoving)

return;

isMoving = true;

moveTime = 0;

lastStepIndex = -1;

currStepIndex = -1;

soundInterval = 1.5f;//根据人物是走路/奔跑/冲刺调整脚步声的间隔

onFixedUpdate += Move;

}

// 已经播放音效的脚步编号

int lastStepIndex;

// 当前脚步编号

int currStepIndex;

// 每个脚步的时间间隔

float soundInterval;

// 移动

private void Move()

{

moveTime += Time.deltaTime;

rigidbody.velocity = transform.forward * movePara.x * speed;

rigidbody.angularVelocity = transform.up * movePara.y * rotationSpeed;

currStepIndex = (int)(moveTime / soundInterval);//每隔n秒就需要播放脚步身

if (currStepIndex > lastStepIndex)

{

lastStepIndex = currStepIndex;

audio.Play();

}

}

// 结束移动

private void EndMove()

{

if (!isMoving)

return;

isMoving = false;

onFixedUpdate -= Move;

if (audio.isPlaying)

audio.Stop();

}

unity 人物走动声音_想问的问题是:因为想要写脚步声相关推荐

  1. unity 人物走动声音_Unity3D实现人物走动 教程

    using UnityEngine; using System.Collections; using System.Linq; public class move: MonoBehaviour { p ...

  2. unity 人物走动声音_Unity3D实现人物走动

    using UnityEngine; using System.Collections; using System.Linq; public class move: MonoBehaviour { p ...

  3. unity人物刚体移动_教程篇 | Unity人物移动动画

      人物移动动画    HCI 人机交互 PART-1 首先创建一个Unity3D工程,命名为Hero,选择3D,右下角创建项目. PART-2 在Asset Store中下载一些免费的素材,场景和人 ...

  4. 查询单条记录需要索引吗_我想买一辆二手车,想问一下怎么能查到这辆车的事故、维修保养记录?交警队或保险公司能查询吗?...

    最近有网友问小编,"我想买一辆二手车,怎么查这辆车是不是事故车及车辆的维修保养记录呢?要到交警队或保险公司查吗?".今天让小编来告诉大家如何查询车辆是不是事故车及车辆的维修保养记录 ...

  5. java记录按钮点击次数_新手想问:JAVA怎么实现在规定时间记录点击按钮的次数...

    新手想问:JAVA怎么实现在规定时间记录点击按钮的次数 我估计问题应该是main方法里的循环没法实现,不知道怎么解决了. import java.awt.Color; import java.awt. ...

  6. unity人物旋转移动代码_Unity3D研究院之脚本实现模型的平移与旋转(六)

    123 说: 雨松大大,有个问题想请教一下,我用UNET构建了个小场景,在电脑上可以客户端可以连接到服务器,Windows和Linux都可以,发布到安卓缺连不了,这是问什么呢 说: 求教一下,刚刚接触 ...

  7. 用devc++表白_表白 | 大三,女,想找一个长得帅的175以上的小哥哥谈恋爱

    『表白置顶』 戏要演就演全套的好么?一面说还是做好朋友吧快快乐乐一面对我不冷不淡拉开距离惜字如金爱搭不理,一面说我不是那种"喜欢"你了只是朋友间的喜欢了一面要求我甩甩脑喝脑残水儿忘 ...

  8. 在html利用canvas蚂蚁,html5 利用canvas实现简单的人物走动

    最近在学习html5,其中涉及到很关键的元素canvas-画布,在网上下载了一些游戏源代码,虽然能看懂,但是想单独地针对某个功能提取出来还是有难处的,于是乎自己又上网查找了一些例子,才将超级玛丽简单的 ...

  9. 学堂在线计算机挂了咋办,各位师兄师姐我想问下计算机挂了是直接重修吗(#泪)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 儿子马上就要过15岁生日了,爸爸问他生日礼物想要什么. 儿子想了想说:"男孩子想要的东西我都有了,唯一能想到的,就是一只用塑料做的鹦鹉玩具.&q ...

最新文章

  1. Python: strip()和split()的用法与区别
  2. MySQL 数据库的操作 连接、新增、删除、选择数据库 命令行(带图)
  3. sklearn数据的获取
  4. BugKuCTF 杂项 又一张图片,还单纯吗
  5. 从zip中读取文件 合并到指定的文件中
  6. linux系统防火墙配置浅谈
  7. mongodb的文档游标
  8. 早鸟票只剩3天丨为何一定要参加今年的CNCC?
  9. JAVA学习day06
  10. PCalc for Mac(科学计算器)
  11. 遗传算法c语言程序二次方程,遗传算法的c语言程序.doc
  12. 麻雀搜索算法——Matlab
  13. 用户故事与敏捷方法笔记---估算用户故事
  14. SaaS-HRM(5)系统用户权限设计(角色管理、权限和资源管理)
  15. 防火墙 | DDos攻击防范技术
  16. python之js破解qq邮箱登录
  17. 简单融合双系统 苹果虚拟Win8实用技巧
  18. 三神器-迭代器、生成器和装饰器
  19. Android USB串口打印结账单小票
  20. PTA】{10-1 结构拓展实验,函数}6-3 求某学生8门课的平均分 (10 分)

热门文章

  1. Unity 对GPU的基础性能优化
  2. CSS渐变-圆形年轮
  3. 关于腾讯vs360,看看,还挺逗乐的
  4. 红帽学习环境下的ansible yum源配置
  5. 红帽redhat Linux配置本地yum源
  6. mpeg2是信源还是信道编码_论信源编码与信道编码
  7. php curl 400 bad request怎么解决,关于json:file_get_contents抛出400 Bad Request错误PHP
  8. 【TP5】关于toArray()的用法以及注意点
  9. 自建机房跟IDC运营机房差异比较
  10. tomcat无法访问webapps下的项目问题