Unity3d小游戏--打砖块

简介: Unity3d小游戏--打砖块

之前已经写过几篇用unity写的小游戏博客,感觉还不错,那么我就继续写下去。 今天写的打砖块初级版的小游戏。

其实这个游戏就是模仿传统的打砖块游戏。不过游戏的主题设计是在海底。一只乌龟作为挡板接住小球,并且通过反弹小球而打到浮在上游的其他海底生物。游戏界面如下图所示。

image.png

为了丰富游戏内容,让游戏元素更加多。此小游戏采用了关卡制。打完一关会到下一关。并且每一关卡的难度不一样,怪物不一样,怪物数量不一样,并且怪物的血量不一样。

image.png

虽然创造的是一个小游戏,但是它也是五脏六腑俱全的。下面我们一起来看看它的设计过程。

1首先介绍的是场景中的物体。

image.png

场景中的物体有上面几部分过程,分别是摄像机,日关灯,背景图,小球,乌龟,gameover图标。摄像头就像是眼睛一样,是必须的,没有了摄像头也就看不到场景发生了什么。还有日关灯是平行光,像太阳照射一样,如果场景中没有了的话,就会一片黯淡无光。我做的是2d游戏,所以这里只需要导入背景图片,然后设置成为精灵类型,在场景中选择中间的位置,把它放大就行。还有在game窗口我用了自己写的比例,让它看起来像手机游戏的窗口显示。

void Start()
    {

        Random.InitState((int)System.DateTime.Now.Ticks);
        x = Random.Range(3.0f, 9.0f);
        y = Mathf.Sqrt(vec * vec - x * x);
        rigid = gameObject.GetComponent<Rigidbody2D>();
        rigid.velocity = new Vector2(x, y);
    }

    // Update is called once per frame
    void Update()
    {
        if (this.transform.localPosition.x > 2.8f && x > 0 || this.transform.localPosition.x < -2.8f && x < 0)
        {
            x = -x;
            rigid.velocity = new Vector2(x, y);
        }
        if (this.transform.localPosition.y < -3.31f &&y<0 )
        {
            Time.timeScale = 0;
            gameover.transform.localPosition = new Vector2(-0.1f, 2.0f);
        }
        if (this.transform.localPosition.y > 6.5f &&y>0)
        {
            y = -y;
            rigid.velocity = new Vector2(x, y);
        }

    }

上面这一段是小球的关键代码。这里面写的主要是小球碰到了墙体,然后反弹,这需要改变速度的方向。

void Update()

    {

 

        //获取鼠标在相机中(世界中)的位置,转换为屏幕坐标;

        screenPosition = Camera.main.WorldToScreenPoint(transform.position);

        //获取鼠标在场景中坐标

        mousePositionOnScreen = Input.mousePosition;

        //让场景中的Z=鼠标坐标的Z

        mousePositionOnScreen.z = screenPosition.z;

        //将相机中的坐标转化为世界坐标

        mousePositionInWorld = Camera.main.ScreenToWorldPoint(mousePositionOnScreen);

        //物体跟随鼠标移动

        //transform.position = mousePositionInWorld;

        //物体跟随鼠标X轴移动

        transform.position = new Vector3(mousePositionInWorld.x, transform.position.y, transform.position.z);

 

}

上面这一段就是乌龟挡板的关键代码。主要是让乌龟随着随表移动。

void OnTriggerEnter2D(Collider2D collider)

    {

        if (collider.gameObject.tag == "spark" && Time.frameCount - timelast > 15)

        {

            timelast =Time.frameCount;

            collider.gameObject.GetComponent<spark>().lift -= 1;

               y = -y;

   

               rigid.velocity = new Vector2(x, y);

        }

        else if (y <0)

        {

            y = -y;

            rigid.velocity = new Vector2(x, y);

        }

  }

我们看看这个小球中的碰撞检测函数。碰撞的对象的tag是spark,这里的spark是指怪物。让碰撞到的话就会血量减少。这个血量是怪物身上的全局属性。当怪物血量为0的话,怪物就会销毁。当场景中没有了怪物,那就算一个关卡的结束。

这个小游戏也不算太难。当时如果是新手学unity的话,可以了解一下。之后对于物理系统和碰撞检测都有一定的认识。如果你有兴趣学unity的话,也可以关注公众号:诗一样的代码,找我一起学习。

相关文章
|
8天前
|
定位技术 流计算 Python
怎样使用Pyglet库给推箱子游戏画关卡地图
怎样使用Pyglet库给推箱子游戏画关卡地图
20 0
|
5月前
泡泡龙游戏开发实战教程(4):泡泡停靠处理
泡泡龙游戏开发实战教程(4):泡泡停靠处理
33 0
|
4月前
|
定位技术 C# 图形学
Unity和C#游戏编程入门:创建迷宫小球游戏示例
Unity和C#游戏编程入门:创建迷宫小球游戏示例
74 2
|
5月前
俄罗斯方块游戏开发实战教程(6):形状停靠
俄罗斯方块游戏开发实战教程(6):形状停靠
21 0
|
5月前
|
开发者 索引
俄罗斯方块游戏开发实战教程(8):下落处理
俄罗斯方块游戏开发实战教程(8):下落处理
39 0
|
5月前
俄罗斯方块游戏开发实战教程(5):形状碰撞检测(下)
俄罗斯方块游戏开发实战教程(5):形状碰撞检测(下)
30 1
|
5月前
|
开发工具
俄罗斯方块游戏开发实战教程(4):形状碰撞检测(上)
俄罗斯方块游戏开发实战教程(4):形状碰撞检测(上)
42 1
|
5月前
|
图形学
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
|
5月前
|
图形学
Unity小游戏——迷你拼图
Unity小游戏——迷你拼图
110 1
|
5月前
|
算法 图形学
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
Unity小游戏——武士击杀小怪兽(无限滚动的背景)

相关实验场景

更多