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的话,也可以关注公众号:诗一样的代码,找我一起学习。

相关文章
|
7月前
|
图形学
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
239 0
|
图形学
Unity小游戏——迷你拼图
Unity小游戏——迷你拼图
278 1
|
图形学
Unity小游戏——使被砍中的怪物四处飞散
Unity小游戏——使被砍中的怪物四处飞散
102 1
|
图形学
unity小游戏——得分高低的判定
unity小游戏——得分高低的判定
|
机器学习/深度学习 算法 图形学
Unity小游戏——无限滚动的背景的改良
Unity小游戏——无限滚动的背景的改良
128 0
|
算法 图形学
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
|
8月前
|
图形学
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
|
图形学
Unity小游戏——武士和怪物的碰撞检测
Unity小游戏——武士和怪物的碰撞检测
100 0
|
图形学
Unity小游戏——怪物出现模式的管理
Unity小游戏——怪物出现模式的管理
136 0
|
图形学
Unity实现2D小游戏
Unity实现2D小游戏FirstGame2D(Sunny Land) 一、游戏说明 本游戏为作者的第一个实验的2D小游戏 实现效果: (1)简单的UI界面以及触发按钮、滑动按钮事件 (2)通过按钮与按键实现场景的切换 (3)通过代码实现动画效果的切换(跳跃、蹲下等) (4)碰撞体以及触发器实现消灭敌人、收集物品、地面检测 (5)相机场景与背景运动差,实现场景与人物的立体效果,达到较好的视觉效果 (6)SoundMananger实现场景音乐的管理
277 0
Unity实现2D小游戏

相关实验场景

更多