赞
踩
我与另外两个组员合作进行了FPS游戏(第一人称射击游戏)的开发,这个游戏对应于我们在项目开始设想的PVP玩家对战游戏。玩家之间的之间对战会让游戏变得更加紧张刺激,还能够增强玩家之间的感情。
我在这个游戏中主要负责的工作是枪械特效、枪械声音、射击反馈震屏、子弹散射、枪械射击弹孔、ui子弹数量、pun控制输入同步、remote开枪效果同步。
首先,我们是在weapon文件夹下完成对枪械的相关脚本的创建和编写的。
创建IWeapon脚本用来管理接口,命名空间归类到Scripts.Weapon下,防止出现冲突:
namespace Scripts.Weapon
{
public interface IWeapon
{
void DoAttack();
}
}
然后编写Firearms脚本,这是枪械整体共用的部分。其中把Firearms枪械类抽象掉,因为这不是具体的枪械,并且可以挂在game object上:
获取枪口的位置,还要知道子弹抛出的位置。抛出弹壳使用粒子变量,避免太多的实例化过程。
需要一个弹夹AmmoInMag,设置容纳的子弹数。并且设置每把枪最大的子弹携带数。此外开枪需要设置动画。
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Scripts.Weapon { public abstract class Firearms : MonoBehaviour, IWeapon { public GameObject BulletPrefab; public Camera EyeCamera; public Camera GunCamera; public Transform MuzzlePoint; public Transform CasingPoint; public ParticleSystem MuzzleParticle; public ParticleSystem CasingParticle; public AudioSource FirearmsShootingAudioSource; public AudioSource FirearmsReloadAudioSource; public FirearmsAudioData FirearmsAudioData; public ImpactAudioData ImpactAudioData; public GameObject BulletImpactPrefab; public float FireRate; public int AmmoInMag = 30; public int MaxAmmoCarried = 120; public float SpreadAngle; [SerializeField] internal Animator GunAnimator; public List<ScopeInfo> ScopeInfos; public ScopeInfo BaseIronSight; protected ScopeInfo rigoutScopeInfo; public int GetCurrentAmmo => CurrentAmmo; public int GetCurrentMaxAmmoCarried => CurrentMaxAmmoCarried; protected int CurrentAmmo;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。