失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用Unity做第一人称射击游戏

用Unity做第一人称射击游戏

时间:2020-01-19 15:27:42

相关推荐

用Unity做第一人称射击游戏

文章目录

场景搭建

忘记更新了…这段时间有点忙 之后再更新吧

教程晚点更新 先上个成品视频给大家看看

/video/BV1P54y1C7zm/

场景搭建

先创建一个地面,然后设置其材质,

我们可以在材质这里的Tiling选择6x6表示平铺成6个

为其创建一个材质

按住v有助于方便对齐

利用下载的资源中搭建一个场景

为了使其更有层次,我们将所有场景物体

拖拽到空物体并为其附上静态的属性

然后进行烘培

烘焙好后如图所示

然后利用所给的资源建立左下角所示的枪的ui

在标签那一栏为层次添加ignore bullet的层的组件

然后把这一栏点选掉,这样就可以使得子弹不对不需要的物体产生作用

接下来我们通过脚本来控制游戏:

因为很多游戏的脚本都会影响UI,比如说替换武器,或者说被敌人击中

所以我们需要其他的脚本方便和HUD进行沟通

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class HUD : MonoBehaviour{private static HUD instance;public static HUD GetInstance() {return instance; }private void Awake(){instance = this;}public Image weaponIcon;public Text bulletNum;public Text hpNum;public void UpdateWeaponUI(Sprite icon,int bullte_num){weaponIcon.sprite = icon;bulletNum.text = bulletNum.ToString();}public void UpdateHpUI(int hp_num){hpNum.text = hp_num.ToString();}// Start is called before the first frame update}

将这个组件拖拽给UI并为其赋值

不需要和子弹发生碰撞的物体设置为

选中这个 处于这一层的物体 互相都不会进行碰撞检测了

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;/// <summary>/// 用来更新子弹和血量的数量/// </summary>public class HUD : MonoBehaviour{private static HUD instance;public static HUD GetInstance() {return instance; }private void Awake(){instance = this;}public Image weaponIcon;public Text bulletNum;public Text hpNum;public void UpdateWeaponUI(Sprite icon,int bullet_num){weaponIcon.sprite = icon;bulletNum.text = bullet_num.ToString();}public void UpdateHpUI(int hp_num){hpNum.text = hp_num.ToString();}// Start is called before the first frame update}

需要两个层:

开火的时候,上半身要有shoot的动作,但是下半身还是要有走路的状态,因此需要设置mask,并且权重设置为一。

为了能在idle和shoot状态间切换,添加一个bool参数shoot,用状态机脚本idle控制:

我们需要实现,当shoot完一次后自动进入idle状态,所以也就是说,当进入shoot状态时,需要把shoot参数设置为false:

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Idle : StateMachineBehaviour{public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo){animator.SetBool("Shoot", false);}}

由于具有骨骼动画,所以需要把枪放在人体骨骼手的结点下

为了产生开火效果的提示,可以在开火动画产生后坐力的时候添加一个事件:

如果觉得《用Unity做第一人称射击游戏》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。