Unity开发一个单人FPS游戏的教程总结

 这个系列的前几篇文章介绍了如何从头开始用Unity开发一个FPS游戏,感兴趣的朋友可以回顾一下。这个系列的文章如下:

Unity开发一个FPS游戏_unity 模仿开发fps 游戏-CSDN博客

Unity开发一个FPS游戏之二_unity 模仿开发fps 游戏-CSDN博客

Unity开发一个FPS游戏之三-CSDN博客

Unity开发一个FPS游戏之四_unity fps-CSDN博客

在这篇文章中,我将计划完善以下几方面:

1. 增加一把狙击枪,实现通过瞄准镜来进行放大瞄准。

2. 新增手榴弹,实现投掷手榴弹的爆炸效果。

3. 重新调整瞄准准星

4. 对模型的材质进行优化。

1. 增加狙击枪武器

模型与动画

在Sketchfab网站上有很多制作精美的狙击枪,这里我选择的是https://skfb.ly/onBJQ,这是英国出品的著名的AWP狙击步枪。下载之后导入到我们之前的Blender文件中,把其中的枪本体,弹匣,枪机分别绑定到对应的武器骨骼,然后调整手臂骨骼来适配武器,如下图

这里需要注意的是,因为AWP是栓动步枪,即每打一枪需要旋转并拉动枪机,因此和之前其他自动步枪相比,还需增加多一个旋转的动作,我把对应的枪机分成两部分,为此要增加多一个枪机的骨骼。

对应狙击步枪的动画制作,和其他枪械的制作过程类似,这里就不再重复,可以查看我之前的文章。

最后把制作好的狙击枪的模型和动画导出为FBX文件,导入到Unity项目中。

瞄准镜效果

下面我们要制作瞄准镜的瞄准效果,当从瞄准镜瞄准时,应能看到放大的瞄准图像。最简单的一个思路时直接调整主相机的FOV,把整个画面拉近,但是这样做不符合实际情况,因为我们只希望瞄准镜内的图像放大。另一个思路是增加多一个相机,把这个相机放在主相机前面,调整其FOV,把放大后的图像投到瞄准镜内。这种方式更好,但是性能上会消耗较大。下面是这种思路的实现方式。

首先在weapon.cs脚本里面增加一个属性hasScope,表示这个武器是否带瞄准镜,在Awake方法中增加以下代码:

[Header("Scope")]
public bool hasScope = false;
public Material ScopeMat;


void Awake() {
    ...
    if (hasScope) {
    _renderTex = new RenderTexture(1024, 1024, 16, RenderTextureFormat.ARGB32);
    _scopeCamObj = new GameObject("ScopeCamera");
    _scopeCamObj.transform.SetParent(transform.Find("pose_controller/weapon"));
    _scopeCamObj.transform.localPosition = transform.Find("pose_controller/weapon/Aimpoint").localPosition;
    _scopeCamObj.transform.localRotation = transform.Find("pose_controller/weapon/Aimpoint").localRotation;
    _scopeCam = _scopeCamObj.AddCo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gzroy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值