• 周三. 4 月 22nd, 2026

物嫩软件资讯网

软件资讯来物嫩

Unity之简单射击游戏案例

admin@wunen

4 月 2, 2025




PS:该案例来自学习的






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



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

射击游戏实机操作_Trim


游戏内容大致如下:

(1)完全使用键盘控制,由W、A、S、D键控制角色的方向移动,J键控制射击。(这样做主要是为了简化游戏输入部分的逻辑。)

(2)玩家具有多种武器,如手枪、霞弹枪和自动步枪,每种武器可以按Q键切换。

(3)场景上除了玩家角色还有若干敌人。敌人会向玩家方向移动并射击玩家。

(4)玩家角色和敌人都有生命值,中弹后生命值减少,减为零时则死亡。




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



目录


1.角色脚本


2.跟随摄像机


3.武器系统


武器


子弹


4.射击的实现


5.游戏全局管理器




场景中,平台平面设为20×20的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)
            {
              

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注