这篇具有很好参考价值的文章主要介绍了unity怎样让玩家在不同材质上行走具有不同脚步声音效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。
问题:
玩家在草地,雪地,木板上行走需要不同的脚步声音效,且无论行走还是奔跑,音效都要和脚步动画同步.
思路:
在动画上添加事件触发脚步声音效,并判断地面的材质然后播放不同的
音效.
实现:
一.判断地面材质
第一种情况
是在unity内置terrain上行走
地面有草地,石地,木地等,需要有不同音效,这时可以通过terrain的terrain.Data的alphamapTextures[0]得到一个图层,其rgba分别代表四张terrain贴图的权重(或不透明度)利用此可以判断某点是什么材质,再调用相应的音效即可区别玩家在不同材质行走的脚步声.
关键代码;
public Terrain terrain;
TerrainData _terrainData;
void Start()
{
_terrainData = terrain.terrainData;
Texture2D _alphamapTexture = _terrainData.alphamapTextures[0];
var x = (int)(transform.position.x * _terrainData.alphamapResolution / _terrainData.size.x);
var z = (int)(transform.position.y * _terrainData.alphamapResolution / _terrainData.size.z);
var color = _alphamapTexture.GetPixel(x, z);
//比较一下color各通道值就能知道当前在什么材质上行走了
第二种情况是在某个物体上行走(比如木板上行走
)
这时可以用向下的射线检测到物体类别并得到材质.
把第一种情况和第二种情况加在一起就能判断所有脚下的材质了.具体可用射线来判断,代码很简单略.....
二.动画事件的设置:
第一种方法(推荐!):
点击动画-->编辑-->预览速读调到最低0.1方便精确找点-->播放预览在所需处停下-->设置事件点,注意函数只能包含在玩家根下的脚本下面.注意:动画如果是legacy格式需要更改,否则不会出现事件编辑界面
c#脚本:
注意函数只能包含在玩家根下的脚本下面
第二种方法:
先复制想添加的动画(否则只能只读)windows-->animation-->animation-->添加事件,代码同上.
需要注意的是事件不要选在最后一帧,很有可能失效,再就是时间参数尽可能选择int,或者hash值.效率可能高些.
文章来源地址https://www.toymoban.com/news/detail-428728.html
文章来源:https://www.toymoban.com/news/detail-428728.html
到了这里,关于unity怎样让玩家在不同材质上行走具有不同脚步声音效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!