Unity之简单射击游戏案例

PS:该案例来自学习的课本和我自己的理解。首次文章创作,还请多多支持呀各位美女、帅哥们!!!

*废话不多说先上游戏实机操作视频*

射击游戏实机操作_Trim

游戏内容大致如下:

(1)完全使用键盘控制,由W、A、S、D键控制角色的方向移动,J键控制射击。(这样做主要是为了简化游戏输入部分的逻辑。)
(2)玩家具有多种武器,如手枪、霞弹枪和自动步枪,每种武器可以按Q键切换。
(3)场景上除了玩家角色还有若干敌人。敌人会向玩家方向移动并射击玩家。
(4)玩家角色和敌人都有生命值,中弹后生命值减少,减为零时则死亡。

那么接下来就看看实现过程吧!文末有游戏半成品分享,不嫌弃就玩玩看哈。

目录

1.角色脚本

2.跟随摄像机

3.武器系统 

武器

子弹

4.射击的实现

5.游戏全局管理器


场景中,平台平面设为20x20的Plane

1.角色脚本

首先我们要创建出游戏玩家和敌人,包含(生命、移速等)属性,并给予他们特定的移动机制如下

玩家:自由移动,但活动限制在平台区域。

敌人:始终朝向敌人移动,但速度相对较慢。

 玩家脚本(Player)代码如下:

//移动速度
    public float c_speed;

    //最大血量
    public float m_maxHp ;

    //输入方向变量
    Vector3  c_input;

    //判断是否死亡
    bool LifeState=true;

    //当前血量
    private float c_Hp;
 void Start()
    {
        //刚开始满血
        c_Hp = m_maxHp;
  }
 void Update()
    {
        //将键盘的横向、纵向输入,保存在input中
        c_input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

        bool fireKeyDown = Input.GetKeyDown(KeyCode.J);
        bool fireKeyPressed = Input.GetKey(KeyCode.J);
        bool changeWeapon = Input.GetKeyDown(KeyCode.Q);


        //判断是否dead,还活着就可以动

        Debug.Log("现在还剩血量:" + c_Hp);
 void Move()
        {
            //先归一化输入变量,让输入更直接,避免同时斜向移动时速度超过最大值
            c_input =c_input.normalized;
            transform.position += c_input * c_speed * Time.deltaTime;
            //令角色前方与移动方向一致
            if (c_input.magnitude > 0.1f)
            {
                transform.forward = c_input;
            }

            //限制移动范围
            Vector3 c_VectorTemp=transform.position ;
            const float m_border = 20f;
            if(c_VectorTemp.x < -m_border)
            {
              
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值