精华内容
下载资源
问答
  • unity2d小游戏
    千次阅读
    2021-05-06 16:29:15

    一、柱子的移动

    1.制作柱子:新建空物体,包含上方柱子,下方柱子和空物体(用于计算得分)
    在这里插入图片描述
    在这里插入图片描述
    2.给柱子和空物体加上适合大小的碰撞体
    空物体需要勾选上Is Trigger
    在这里插入图片描述
    3.柱子的移动(把代码给柱子)

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class BarrierMove : MonoBehaviour
    {
        public Vector3 BarrierPos;//柱子的位置
        public float Posy;//最后位置
        void Start()
        {
        }
        void FixedUpdate()
        {
            //如果柱子的x轴位置小于最终位置
            if (transform.position.x < Posy)
            {
                float y = Random.Range(200, 400);//随机生成一个数字作为高度
                Vector3 height = new Vector3(0, y, 0);
                transform.position = BarrierPos + height;//柱子的位置加上随机的高度
            }
            transform.Translate(Vector3.right * -3f);//使柱子向后移动
        }
    }
    

    根据图片位置设置
    在这里插入图片描述

    二、小鸟的控制

    1.给柱子添加tag
    在这里插入图片描述
    给柱子中间的空物体添加tag
    在这里插入图片描述
    2.给小鸟添加碰撞体和刚体
    在这里插入图片描述

    3.代码(给小鸟)

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    public class Bird : MonoBehaviour
    {
        public bool flag = true;
        public int score = 0;
        public Text text;//得分
        private void FixedUpdate()
        {
            float y = Input.GetAxis("Vertical");//得到y轴
            Vector3 speed = new Vector3(0, y, 0);
            GetComponent<Rigidbody2D>().velocity = speed * 500;//给它y方向上的力
            //如果flag=false,游戏暂停
            if(!flag)
            {
                 Time.timeScale = 0;
            }
        }
        //通过柱子
        public void OnTriggerExit2D(Collider2D collision)
        {
            if(collision.tag== "through")
            {
                score++;
                Debug.Log(score);
                text.text = "分数:" + score;
            }
        }
        //碰到柱子,游戏结束
        public void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.collider.tag == "barrier")
            {
                flag = false;
                Debug.Log("游戏结束");
            }
        }
    }
    

    三、游戏暂停开始

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    public class Timescale : MonoBehaviour
    {
        public Button pause;
        public Button resume;
        void Start()
        {
        }
        void Update()
        {
            
        }
        public void _Pause()
        {
            //游戏暂停
            Time.timeScale = 0;
        }
        public void _Resume()
        {
            //游戏运行性
            Time.timeScale = 1;
        }
    }
    
    更多相关内容
  • 以前大学搞的的简单小游戏,可用于结课大作业,私聊我可获得开发总结 适合初学者 包含源代码和源文件可以进行学习 在unity2D导入即可使用 有浮台陷阱,地刺陷阱,以及在一定范围内巡逻的敌人。 内设两关,有得分
  • unity2d小游戏

    2020-10-29 14:31:25
    一个2d小游戏,应用unity开发,源码可以运行,包括图片素材,包含2d光影效果插件(用于制作视线范围)
  • 自己做的Unity2D小游戏

    2020-11-20 10:51:32
    自己做的Unity2D小游戏,两个人顶球进篮筐,喜欢的支持下,哈哈哈
  • Unity 2D小游戏

    2019-04-13 18:18:53
    自制的Unity2D小游戏,支持手柄操作,上传的是Unity包文件
  • Unity2D小游戏《贪吃蛇》,实现了移动(平滑转向),吃食物长身体,复活等。
  • Unity2d-飞刀小游戏源码
  • unity 2D跳跃游戏源码

    2018-02-07 11:42:14
    游戏截图: http://blog.csdn.net/niehanmin/article/details/79278293 unity 2D跳跃游戏源码
  • 基于Unity2D小游戏

    2020-05-18 00:24:24
    一个基于unity2D的课程作业 - 太空侵略者,用C#编程实现,整体框架粗略,需要的可以看一下。
  • 作者:Christopher LaPollo 小游戏源码演示了Unity2D游戏的实现方法。 关于该游戏的详细制作过程请参考博文:《Unity 2D入门基础教程》
  • 黄金矿工小游戏unity制作,参考:https://huanshj.blog.csdn.net/article/details/122713706
  • 基于Unity2D小游戏吃豆豆
  • Unity实现2D小游戏

    千次阅读 2022-05-10 22:14:53
    Unity实现2D小游戏FirstGame2D(Sunny Land) 一、游戏说明 本游戏为作者的第一个实验的2D小游戏 实现效果: (1)简单的UI界面以及触发按钮、滑动按钮事件 (2)通过按钮与按键实现场景的切换 (3)通过代码实现...

    FirstGame2D(Sunny Land)

    一、游戏说明(unity工程文件资源包链接

    Unity实现2D小游戏FirstGame2D(SunnyLand)-Unity3D文档类资源-CSDN下载 

    本游戏为作者的第一个实验的2D小游戏

    实现效果:

    (1)简单的UI界面以及触发按钮、滑动按钮事件

    (2)通过按钮与按键实现场景的切换

    (3)通过代码实现动画效果的切换(跳跃、蹲下等)

    (4)碰撞体以及触发器实现消灭敌人、收集物品、地面检测

    (5)相机场景与背景运动差,实现场景与人物的立体效果,达到较好的视觉效果

    (6)SoundMananger实现场景音乐的管理

    以下是游戏的部分场景示意图:

    (作者场景搭建不是较好,可以自行继续搭建较好看的场景)

    二、游戏界面

    展开全文
  • 鼠标拖拽右侧拼图碎片到左侧的示例图中,按Esc退出。 Unity版本:2019.4.18f1c1
  • Unity---黄金矿工

    前期准备:

    在Main Camera的 Inspector 视图中:

    1. 将Main Camera 的位置坐标全改为0;
    2. 将Camera ---- Projection 选中为 Orthographic. 【重点,一定要改,不然后面制作UI层有些组件位置不对】
      Orthographic — 正交摄像机
      Perspective — 符合近大远小的特征
      在这里插入图片描述

    导入素材:

    在 Assets 中建一个文件夹 Spite , 放入一些游戏中物体的各种图片素材。

    在这里记录一个将几张图片合成一个短动画,达到一些物体亮闪闪的效果。
    项目中,将如下diamond、Gold做成亮闪闪的效果。在这里插入图片描述
    步骤如下:

    • 在 Assets 文件夹中 创建一个文件夹 Animator ,用于保存做好动画。
    • 选中物体相关的几张图片,然后按住鼠标拖至 Hierarchy 视图框中弹出电脑文件夹【如下图】,修改文件名,将地址改为 Animator ,点击“保存”。
      在这里插入图片描述
    • 这样便做好了 diamond 的动画,Gold 的做法同理。在Animator 中便会有着这些文件【如下图】在这里插入图片描述
    • 应用至游戏操作:首先将物体相关的任意一个素材拖进 Hierarchy ,然后为其添加 Animator 组件,然后将相应的动画拖进该组件的 Controller

      注:注意拖进Controller的文件不是你命名的那个文件,而是另一个对应的文件,这个要拖的文件名是这个物体相关的那几张图片中的任意一张的文件名。
      在这里插入图片描述
      这些调好之后就可以在游戏启动后看到亮闪闪的效果。

    正式开始

    游戏制作分为三层:背景层、UI层、游戏层,按这个顺序制作。
    背景层:

    1. 在 Hierarchy 添加Canvas改名为BGCanvas、Image做背景。

    将Canvas 的 一些Render Mode 改为 Screen Space - Camera将 Main Camera 拖进Render Camera 的框中,然后将 Plane Distance 改为5就足够了。
    在这里插入图片描述

    1. 选中Image,点击其 位置如图,然后 Alt + 左键 将Image填充至整个背景Canvas上。然后将背景图片拖至Source Image处,或者按后面的那个按钮直接选择。
      在这里插入图片描述
      3D效果展示:
      在这里插入图片描述
      2D效果展示:
      在这里插入图片描述

    UI层:
    添加Canvas改名为UICanvas 、Text
    将Text的大小、颜色、位置调整好,然后 Ctrl + D复制Text调整至合适位置,将各处的Text文本内容修改好。
    注意:记得将 Text 的位置坐标 Z 改为与UICanvas层相同。
    3D游戏环境展示:
    3D

    2D游戏环境展示:
    在这里插入图片描述
    游戏层: 用来控制游戏操作。

    1. 添加游戏元素–矿石:diamond、gold、rock、mouse,添加好一个后,该设置的设置好后,直接Ctrl+D 复制几个,然后调整一下各自的位置。
    2. 添加绳子与绳套:让绳子作为绳套的父节点。
    3. 因为游戏操作中有绳套与矿石之间的碰撞,因此需要给矿石与绳套添加用于碰撞检测的组件:Rigidbody 2D 与 Circle Collider 2D,然后修改Rigidbody 2D 中的Gravity Scale 为 0 (这个是重力,改为0,就不落下去) 、Cricle Collider 2D 勾选 Is Trigger 。
    4. 编写代码,挂载至相关的游戏组件上,运行游戏。
      C#脚本实现功能内容:
      【本人小白,代码编写能力一般,就简单描述一下代码需要实现的功能就行吧】
      1. CheckObject:用于绳套检测其是否抓到(碰到)矿石。如果抓到了就将该矿石作为子节点带回,绳子回收过程中,关闭碰撞检测,避免在抓到其他矿石。
      2. GameMange:
        (1)分别枚举绳子的三种状态:摇摆Rock,拉伸Stretch,缩回Shorten。实现三种状态:Rock() { 绳子在一定范围内旋转 } ; Stretch() { 绳子在检测到鼠标左键点击事件后,拉伸变长,变长有最长限制。其次,绳子拉伸变长,但是绳套不能随之一起拉伸 } ;Shorten() { 绳子拉伸变短即可。 }
        (2)游戏时间倒计时、加分:在绳子缩短时根据是否检测到绳套有子节点来确定是否加分以及销毁该子节点;每次得分的分数通过检测各个游戏元素的 tag 【这个需要自己在Unity中添加,给每个相关游戏元素选择上】来确定加多少分。

    总结:这是很简单的项目,不复杂,刚跟着那视频做的时候,那视频也就一个小时多,看起来很快的样子,但是我硬是搞了一天,有些选项没选,后面的操作效果都有误差,有些操作我不会,连个视图怎么转都不知道,搞得自己半天都不知道该怎么调整。后面代码也有错,效果简直搞笑的离谱。现在也还没找出来bug,感觉我写的和人家一模一样哦。
    又重头自己做一遍,第一遍自己检查错误的时候就已经把步骤记得差不多了【吐血】,但是还是忘了一个操作,所以也检查了几遍,不过最后一遍下来基本效果都已经实现了,和视频里的差不多了。接下来呢,就是要写过关、开始游戏的一些UI设置,说实话这个还没学到,都还没接触一个设置游戏开始到玩游戏的那个页面跳转设计,一个完整的游戏还差的很远。
    这次做这个本来是打算就一天时间,给自己找找做游戏的信心与兴趣,结果搞得心态难受,不过还好每次被自己傻气的无语的时候都及时打开了浏览器搜寻解决方法,成功将自己心态拉回来一段。所以每次感觉自己不行了,就一定要努力冷静让自己调整心态去想如何解决这件事,还有一个,每次不行了,就想想要不放弃吧,那个时候你会得到某一瞬间的轻松愉悦,但那也就一瞬间,接着你只会想,你这就放弃了?好意思?还不如好好再重新看看检查一下。毕竟你还是个菜鸟,还是个学习的人,又不是创造的人,总有人会给你解决方法的。

    展开全文
  • 文章目录前言一、素材制作1.这边就是简单用PS到了几个基础图形二、场景搭建1.搭建目标场景2.搭建游戏场景3....写个了ColorShoot的小游戏简单Demo,主要是分享思路和巩固基础知识。 自学Unity一个月做个小


    前言

    写个了ColorShoot的小游戏简单Demo,主要是分享思路和巩固基础知识。


    自学Unity一个月做个小游戏试试手

    一、素材制作

    1.这边就是简单用PS到了几个基础图形

    1.三种颜色的方块
    2.4种颜色的圆(主要颜色一样的话射击的时候颜色会叠加)
    在这里插入图片描述

    二、场景搭建

    1.搭建目标场景

    1.这边其实在PS里搭建好以后直接用一个精灵展示也是可以的,我这边是拼出来的。
    2.这里目标就看关卡的需要了,我这边就随便拼了个这样的
    3.基本下面的Target,RectWhit,Circle都是空物体,用于存放其他精灵子物体
    在这里插入图片描述
    在这里插入图片描述

    2.搭建游戏场景

    1.先创建一个白色方块精灵,制作为预制体,然后拖出来9个方块组成游戏场景
    注意:该游戏物体需要添加2D的碰撞器组件
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    2.创建圆的按钮预制体,先放一个绿的和红的就可以了
    注意:该游戏物体需要添加2D的碰撞器用于检测鼠标点击
    在这里插入图片描述

    3.创建子弹的预制体,用颜色较深的两个圆来做
    注意:该游戏物体需要添加2D的碰撞器和刚体,同时需要勾选触发器,刚体重力调整为0
    在这里插入图片描述

    在这里插入图片描述

    3.添加按钮重新开始和退出游戏

    1.我这边选择是这种渲染模式,因为游戏场景不会超出屏幕范围
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    三、代码功能实现

    1. Shoot脚本,子弹射击的实现

    在这里插入图片描述
    1.需要引用的空间

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using UnityEngine.SceneManagement;
    

    2.制作子弹的射击

        public float speed = 5;//定义一个浮点变量速度
        public bool isGreen;//定义一个布尔变量判断射出的子弹是绿的还是不是绿的
        public void ShootGreen()//声明一个射击方法,思路是子弹自动向前方匀速运动
        {       
                transform.Translate(transform.up * speed * Time.deltaTime, Space.World);              
        }
      void Update()
        {
            ShootGreen();//在Update种调用射击方法
        }
    

    2.ButtonGreen脚本,实现点击控制子弹的射出

    1.代码实现子弹实例化的功能

        public bool isButtonGreen;//定义一个布尔变量用于判断按钮是绿的还是不是绿的
        public GameObject GreenBullet;//定义一个游戏物体用于获取绿色子弹
        public GameObject RedBullet;//顶一个游戏物体用于获取红色子弹
        private void OnMouseDown()//这里用一个鼠标按下方法来判断射击的时机,按钮需要添加2D碰撞器组件,不然检测不到
        {       
            if (isButtonGreen)//当按下绿色按钮时,原地实例化一个绿色子弹
            {
                Instantiate(GreenBullet, transform.position, transform.rotation);
            }
            if (!isButtonGreen)//当按下红色按钮时,原地实例化一个红色子弹
            {
                Instantiate(RedBullet, transform.position, transform.rotation);
            }
        }
    

    2.挂载在按钮上,然后右边三个按钮调整为Z轴旋转90度,这样根据之前Up的子弹运动代码,子弹就会从按钮上生成后向左移动,下面三个按钮不需要旋转就会往上发射子弹(然后该旋转不需要通过预制体改动,是根据按钮自身的需求进行改动)
    在这里插入图片描述

    在这里插入图片描述

    3.通过标签实现碰撞检测和空气墙的制作

    1.新添加2个标签用于判断是矩形还是空气墙
    在这里插入图片描述
    2.回到Shoot脚本,同时给所有的白色方块添加上RectWhite的标签
    同时也需要给挂载Shoot脚本的子弹,指定红色方块和绿色方块,还有选择这个子弹是红色子弹还是绿色子弹
    在这里插入图片描述
    在这里插入图片描述

        public Sprite green;//定义一个绿色精灵用于获取绿色矩形,如果颜色矩形数量多就用数组
        public Sprite red;//定义一个红色个精灵用于获取红色矩形
    ```private void OnTriggerEnter2D(Collider2D collision)//碰撞检测
        {
            switch (collision.tag)//用标签判断碰撞的物体
            {
                case "Wall"://当子弹碰到空气墙就销毁
                    Destroy(gameObject);
                    break;
                case "RectWhite"://当子弹碰到白色方块的时候
                    if (isGreen)//判断如果是绿色子弹则将碰撞到的方块变成绿色
                    {
                        collision.GetComponent<SpriteRenderer>().sprite = green;
                    }
                    if (!isGreen)//判断如果不是绿色子弹则将碰撞到的方块变成红色
                    {
                        collision.GetComponent<SpriteRenderer>().sprite = red;
                    }
                    break;          
            }
            
    
    

    3.空气墙的制作
    1.创建一个空物体,然后创建四个空物体,添加上2D碰撞器组件,并加上Wall 的标签,位置可以像我下面一样,这样子弹射到空气墙就会销毁。在这里插入图片描述

    在这里插入图片描述

    4.实现游戏重新开始和通关判断

    1.通关判断,在Shoot脚本里

    public void Sucess_F()//胜利方法,相当于游戏种的9个方块达成与目标一样的条件,如果后续学会了更简单的方法再来改
        {
            if (GameObject.Find("RectWhite1").GetComponent<SpriteRenderer>().sprite == red&&
                GameObject.Find("RectWhite2").GetComponent<SpriteRenderer>().sprite == green&&
                GameObject.Find("RectWhite3").GetComponent<SpriteRenderer>().sprite == green&&
                GameObject.Find("RectWhite4").GetComponent<SpriteRenderer>().sprite == red&&
                GameObject.Find("RectWhite5").GetComponent<SpriteRenderer>().sprite == red&&
                GameObject.Find("RectWhite6").GetComponent<SpriteRenderer>().sprite == red&&
                GameObject.Find("RectWhite7").GetComponent<SpriteRenderer>().sprite == red&&
                GameObject.Find("RectWhite8").GetComponent<SpriteRenderer>().sprite == green&&
                GameObject.Find("RectWhite9").GetComponent<SpriteRenderer>().sprite == red
                )
            {          
                SceneManager.LoadScene("Sucess");//切换胜利场景
            }
        }
         void Update()
        {
            Sucess_F();//胜利方法
        }
    

    2.退出游戏和重新开始
    创建新脚本Game吗,并创建一个空物体用于挂载脚本,然后将该物体指定给按钮后,选择对应的方法,退出游戏按钮也同理
    在这里插入图片描述

    public Sprite white;//定义一个精灵获取白色方块
        public void Button_Restart()
        {
          GameObject[] gameObject = GameObject.FindGameObjectsWithTag("RentWhite");//定义一个精灵数组用于获取所有有白色标签的方块
            for (int i = 0; i < gameObject.Length; i++)//用一个For循环来把所有方块换成白色方块完成初始化
            {
                gameObject[i].GetComponent<SpriteRenderer>().sprite = white;
            }
        }
         public void Button_OnApplicationQuit()//游戏退出方法
        {
            Application.Quit();
        }
    

    3.胜利界面脚本
    这边创建了第二个场景,胜利场景里面就一个按钮和一个文字
    GameObject空物体用于挂载脚本,将该物体指定给按钮,然后选择到我们声明的方法,这样点击后就会返回游戏界面
    ](https://img-blog.csdnimg.cn/20201129203210963.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDIyOTc1Mw==,size_16,color_FFFFFF,t_70)

    在这里插入图片描述

    public void Button_MorePlay()
        {
            Button_Restart();//重置方块颜色方法
            SceneManager.LoadScene("Game");//回到游戏界面
        }
    

    在这里插入图片描述

    展开全文
  • Unity3D项目小游戏(2D打鱼),一个小游戏,基于Unity3D,2D小游戏
  • 分享一个2D小游戏的完整制作教程——小球跳圈
  • Unity3D 2D射击小游戏瞄准线的实现

    千次阅读 2022-02-21 00:01:23
    Unity3D 2D射击小游戏瞄准线的实现 0. 前言 本片文章是对 https://www.bilibili.com/video/bv1sY411V7tx 视频中瞄准线是如何实现的一个讲解教程,欢迎大家去B站给我一键三连鸭! 这个项目的整个代码和资源已经上传到...
  • 一个跑酷小游戏,解压后直接导入unity空项目中,就可以玩了,自己也可以添加修改东西.适合新手学习娱乐.
  • unity 2D小游戏关于transform问题总结

    千次阅读 2018-12-05 10:52:04
    1,unity中position始终是在3d场景中的坐标,不管他是2d场景还是3d场景  localposition表示相对于父物体的坐标,如果父物体是rectTransform那么他也是recttransform 2,改变recttransform的位置坐标可以进行...
  • unity3D做的一款简单的2D飞机大战的游戏,很简单,大家可以看看。 用unity3D做的一款简单的2D飞机大战的游戏,很简单,大家可以看看。
  • Unity3D开发2D小游戏 Flapping
  • unity跑酷小游戏-横版

    2019-04-26 16:37:38
    C#脚本实现的跑酷类的2D小游戏,可在原有的代码上进行自己的扩展,该游戏涉及到动画、预制体等设置,需要自己百度完成,资源中也给出了制作该游戏的音频和图像资源,供大家学习和参考
  • unity3d开发的小游戏,c#写的,可以玩一玩,源码在里面。
  • unity2d_拼图小游戏

    2015-11-03 16:55:28
    一个用unity5.0实现的简单的拼图游戏,拖动拼图碎片而把其放到相应的位置,此资源包含可以直接运行的源代码。具体的介绍可见博客: http://blog.csdn.net/wfenglinxu/article/details/49584605
  • Unity制作2D战棋小游戏

    2022-04-06 13:14:41
    这次想要做一个简单且传统的战棋小游戏,大概的玩法是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方在地图上轮流行动,并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利。 今天我们来实现一个入门...
  • 基于Unity3D的2d拾宝游戏,exe可直接运行
  • 创建一个空对象叫PlaySpace并把Background(也就是这个蓝色的背景)拖进来,创建三个空对象左右上Wall,然后添加BoxCollider2D保证边缘与游戏场景的边缘吻合 除此之外我们还要创建一个底下的触发器,当球碰到时就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,216
精华内容 5,686
关键字:

unity2d小游戏