产品展示网站含后台网站模板下载,宁波网站建设哪里便宜,网站大图怎么优化,广州17做网站文章目录 本节最终效果前言素材人物移动音效枪口火焰和开火音效枪口灯光弹孔和火花添加武器随镜头手臂摇摆效果源码完结 本节最终效果 前言
本节主要实现添加音效#xff0c;和一些特效、武器摆动调整。
素材
素材#xff0c;为了方便我直接用了unity免费的音效输出#… 文章目录 本节最终效果前言素材人物移动音效枪口火焰和开火音效枪口灯光弹孔和火花添加武器随镜头手臂摇摆效果源码完结 本节最终效果 前言
本节主要实现添加音效和一些特效、武器摆动调整。
素材
素材为了方便我直接用了unity免费的音效输出后面还会使用他里面的一些特效 https://assetstore.unity.com/packages/templates/systems/low-poly-shooter-pack-free-sample-144839
人物移动音效
修改PlayerController
MoveSound();//移动音效
public void MoveSound()
{// 如果在地面上并且移动长度大于0.9if (isGround moveDirection.sqrMagnitude 0.9f){audioSource.clip isRun ? runingSound : walkingSound;if (!audioSource.isPlaying) audioSource.Play();}else{if (audioSource.isPlaying) audioSource.Pause();}
}配置参数 测试效果截屏是没声音的这里就不演示了
枪口火焰和开火音效
修改WeaponController
[Header(特效)]
public ParticleSystem muzzleFlash;//枪口火焰特效
[Header(声音)]
private AudioSource audioSource;
public AudioClip fireSound;private void Start()
{currentBullects bulletsMag;audioSource GetComponentAudioSource();
}// 射击
public void GunFire()
{//。。。PlayerShootSound();muzzleFlash.Play();//枪口火焰
}//播放射击音效
public void PlayerShootSound()
{audioSource.clip fireSound;audioSource.Play();
}配置参数在枪口处放置特效 火焰粒子特效我稍微改了一下参数
效果
枪口灯光
灯光介绍零基础带你从小白到超神14——灯光、摄像机、天空盒、镜子的制作
在枪口处加个点光源配置参数并默认关闭灯光 修改WeaponController
public Light muzzleFlashLight;//枪口火焰灯光void Update()
{if (Input.GetMouseButton(0) currentBullects 0){GunFire();}else{muzzleFlashLight.enabled false;}
}// 射击
public void GunFire()
{//...muzzleFlashLight.enabled true;//枪口灯光
}效果
弹孔和火花
子弹和火花为了省事我直接P_IMP_Concrete的特效分出来 修改WeaponController
public GameObject hitParticle;//子弹击中火花粒子特效
public GameObject bullectHole;//弹孔// 射击
public void GunFire()
{if (fireTimer fireRate || currentBullects 0) return;isFire true;RaycastHit hit;Vector3 shootDirection shooterPoint.forward; // 射击方向向前//场景显示红线方便调试查看Debug.DrawRay(shooterPoint.position, shooterPoint.position shootDirection * range, Color.red);if (Physics.Raycast(shooterPoint.position, shootDirection, out hit, range)) // 判断射击{Debug.Log(hit.transform.name 被击中了);GameObject hitParticleEffect Instantiate(hitParticle, hit.point, Quaternion.identity);//实例出击中特效GameObject bullectHoleEffectInstantiate (bullectHole, hit.point,Quaternion.FromToRotation(Vector3.up,hit.normal));//实例出弹孔号Destroy(hitParticleEffect, 1f);Destroy(bullectHoleEffect, 3f);}currentBullects--;fireTimer 0;PlayerShootSound();
}配置参数 新增ImpactScript 脚本用于控制弹道击中表面时的效果播放击中音效并在一定时间后销毁
public class ImpactScript : MonoBehaviour
{[Header(持续时间)]public float despawnTimer 10.0f;[Header(音效)]public AudioClip[] impactSounds;public AudioSource audioSource;private void Start(){// 启动销毁计时器StartCoroutine(DespawnTimer());// 从数组中随机选择一个音效剪辑audioSource.clip impactSounds[Random.Range(0, impactSounds.Length)];// 播放随机音效audioSource.Play();}private IEnumerator DespawnTimer(){// 等待指定时间yield return new WaitForSeconds(despawnTimer);// 销毁撞击效果物体Destroy(gameObject);}
}挂载配置参数
效果
添加武器随镜头手臂摇摆效果
新增
// 武器摇摆
public class WeaponSway : MonoBehaviour
{/* 摇摆的参数 */public float amount; // 摇摆幅度public float smoothAmount; // 平滑值public float maxAmount; // 最大摇摆幅度private Vector3 originalPosition; // 初始位置void Start(){// 自身位置相对于父级物体变换得位置originalPosition transform.localPosition;}void Update(){// 设置武器手臂模型位置的值鼠标反转float movementX -Input.GetAxis(Mouse X) * amount;float movementY -Input.GetAxis(Mouse Y) * amount;// 限制摇摆范围movementX Mathf.Clamp(movementX, -maxAmount, maxAmount);movementY Mathf.Clamp(movementY, -maxAmount, maxAmount);Vector3 finalPosition new Vector3(movementX, movementY, 0);// 手柄位置变换transform.localPosition Vector3.Lerp(transform.localPosition, finalPosition originalPosition, Time.deltaTime * smoothAmount);}
}配置参数可以配置到自己喜欢的感觉 效果可以看到视角移动枪会有跟着小幅度摆动很灵动
源码
源码在最后一节
完结
赠人玫瑰手有余香如果文章内容对你有所帮助请不要吝啬你的点赞评论和关注以便我第一时间收到反馈你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法也欢迎评论私信告诉我哦
好了我是向宇https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者出于兴趣爱好于是最近才开始自习unity。如果你遇到任何问题也欢迎你评论私信找我 虽然有些问题我可能也不一定会但是我会查阅各方资料争取给出最好的建议希望可以帮助更多想学编程的人共勉~