当前位置:   article > 正文

Unity3D射击小游戏Demo开发_unity小球射击

unity小球射击

DEMO介绍

有一面由许多小矩形块拼起来的墙,游戏的玩法就是通过鼠标左键点击发射小圆球,小圆球撞击墙体,使组成墙体的矩形块被冲撞开。

游戏展示

在这里插入图片描述

开发流程

创建开发环境,新建项目

新建项目(这里我是拿Unity 202.3.1的版本)。
在这里插入图片描述

创建地面

在这里插入图片描述
给地面一个颜色。

将GroundM材质拖给Ground即可。

创建墙体

由于墙体是有多个相同的小矩形拼成的,所以用预制体(Prefab)来做一个小矩形的模板,然后其他的小矩形根据这个模板来生成也就是实例化
在这里插入图片描述
同样的给它一个颜色。
在这里插入图片描述
然后再Assets目录下创建一个Prefabs的目录,将Brick拖入Prefabs中去,这样一个预制体就做好了~(可以观察Brick左边的图标是否变蓝来判断预制体是否制作成功)。

然后我们可以选中Brick这个方块,按下Ctrl + D就可以对该预制体进行复制,然后在Scene界面下调整各个方块的摆放位置。

然后给预制体小球加上刚体组件,不然就做不到物理碰撞。
在这里插入图片描述

最后做完的样子。
在这里插入图片描述
在Scene下用鼠标拖动调制Brick方块的位置时可能会拖动得不精确,这个时候我们可以按住Ctrl再用鼠标拖动就可以根据步长来移动,这个移动的步长也可以进行修改。
在这里插入图片描述
在这里插入图片描述

制作子弹小球

同墙体制作差不多,射出的小球都是一样的,所以也要用到预制体。
给小球调整好大小,设置好颜色,然后拖入Prefabs文件夹中即可。
在这里插入图片描述
给小球添加刚体组件,不然就不能做物理碰撞。
在这里插入图片描述

移动视野

游戏就如同电影,相机拍到什么,我们才能看到什么。
我们可以通过改变相机的位置角度,从而达到移动视野的目的。
在这里插入图片描述
在Assets文件夹下创建一个Scripts文件夹,该文件夹存放我们所有写的Script脚本文件。
这里我们新建一个CameraMove的脚本文件来实现相机的移动。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraMove : MonoBehaviour
{
    public int speed = 1;   // 镜头移动速度
    public int rotateSpeed = 1; // 镜头随着鼠标移动的速度
    // Start is called before the first frame update
    // 初始化操作
    void Start()
    {
    }

    // Update is called once per frame
    // 每一帧执行的动作
    void Update()
    {
        float h = Input.GetAxis("Horizontal"); // 得到的是一个-1到1的中间的值(-1,1),h代表的是水平的,v代表的是垂直的
        float v = Input.GetAxis("Vertical");
        float x = Input.GetAxis("Mouse X") * rotateSpeed;   // 获取鼠标在屏幕上的x坐标
        float y = Input.GetAxis("Mouse Y") * rotateSpeed;   // 获取鼠标在屏幕上的y坐标
        transform.Translate(new Vector3(h,v,0) * speed * Time.deltaTime);   //当前帧运动的距离,Time.deltaTime表示的是当前帧到当前帧结束所需要的时间
        
        transform.localRotation = transform.localRotation * Quaternion.Euler(-y,x,0); //镜头随着鼠标动
    }

    //private void FixedUpdate 一秒执行50帧动作,每帧执行0.02秒,可以修改 在Edit-> Project Settings-> Time-> FixedTimestep中修改
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

将写好的CameraMove脚本拖给Main Camera,这样我们游戏中的视野就可以动了。

射击功能

步骤同上面的CameraMove脚本一样。
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Shoot : MonoBehaviour
{
    public GameObject BulletPrefab;
    // Start is called before the first frame update
    void Start()
    {
        // GameObject.Instantiate(BulletPrefab,transform.position,transform.rotation); //实例化一个prefab的一个对象
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {            
            GameObject bullet = GameObject.Instantiate(BulletPrefab,transform.position,transform.rotation); // 实例化,实例化的小球的位置跟相机的位置以及角度相同
            Rigidbody rd = bullet.GetComponent<Rigidbody>();
            // 两种给小球速度的方式,一种是给一个带方向的力,另一种是给一个带方向的速度
            // rd.AddForce(Vector3.forward); //给子弹一个向前为1牛顿的力,每一帧给一牛
            Ray mouseRay= Camera.main.ScreenPointToRay(Input.mousePosition); // 生成以摄像机为起点经鼠标点位置的射线
            rd.velocity = mouseRay.direction * 35; // 设置子弹的速度,这个速度有方向
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

将该脚本拖给Main Camera。
在这里插入图片描述
同时也要讲预制体Bullet拖给Shoot脚本中对应的属性。

最后

就可以开始射击了,biubiubiu~。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/90934
推荐阅读
相关标签
  

闽ICP备14008679号