文章目录

  • 前言
  • 1.准备游戏材质
  • 2.进入编辑器,处理四色环的逻辑
  • 3.玩家控制小球逻辑
  • 4.关于摄像机部分

前言

  • 看到了个不错的unity3D游戏教程,于是记录一下
  • 这是工程地址+游戏Demo

1.准备游戏材质

  • 工具使用PS

  • 剪切这么几个不同颜色的圆环,切开 (注意要PNG格式的哦)

  • 准备一个红旗 (注意要PNG格式的哦)

2.进入编辑器,处理四色环的逻辑

  • 来到unity中,对我们准备好的png照片进行分割
  • 在这里切割哦,完成后点apply
  • 切好之后,将换的4个部分放到场景中,用一个父物体装着,并且调整好位置,使转动父物体的Z轴,环也能正常绕中心点转动!
  • ok接下来我们写个脚本,让这个环在游戏开始的时候就以一定的速度转起来(100的角速度)之后环就可以转动了!
/// <summary>
/// 圈转动
/// </summary>
public class Rotator : MonoBehaviour
{public float rotateSpeed = 100f;private void Update(){//每秒转100度transform.Rotate(0f,0f,rotateSpeed*Time.deltaTime);}}
  • 因为涉及到小球碰撞环的逻辑,因此需要给四个环都上一个碰撞器组件,因为的不规则物体,所以上一个多边形的碰撞器
  • 这样一个关卡就差不多完成了(除了还没有上tag~)

3.玩家控制小球逻辑

  • 新建一个2DObject的小球,并且Sprite选择一个Knob

  • 因为小球需要收到模拟的重力作用,因此给一个Rigibody,重力设置为3,并且锁定其x和z轴的运动,只让其在Y轴进行运动

  • 因为要考虑到与环的碰撞,因此给其来一个碰撞器,选中Is Trigger,这样即使碰撞到了,小球不会被弹开,会穿过,但是不影响碰撞的回调

  • 接下来我们来写小球的脚本

  • 首先写一个小球跳跃的逻辑,当点击鼠标左键,或者空格,小球向上跳跃~并且第一次跳跃前设置重力为0,开始游戏后,小球重力规模设置为3.

private void Update()
{if (Input.GetButton("Jump") || Input.GetMouseButtonDown(0)){if (firstBegin){rb.gravityScale = 3;firstBegin = false;}rb.velocity = Vector2.up * jumpForce;}
}
  • 关于小球碰撞后的回调方法OnTriggerEnter2D,如果碰到的是tag为color changer的物体就改变颜色,然后将碰到的物体销毁(这个color changer其实就是一个隐藏起来的物体,用来让小球穿过一个环之后更改颜色的);如果碰到了和当前颜色不同的颜色环,那么记作游戏失败,重新加载场景(也就是回到起点)
private void OnTriggerEnter2D(Collider2D col)
{//碰撞的对象colif (col.CompareTag("color changer")){SetRandomColor();Destroy(col);return;}if (!col.CompareTag(currentColor)){//回到出生点SceneManager.LoadScene(SceneManager.GetActiveScene().name);}if (col.CompareTag("win point")){SceneManager.LoadScene("Win");}
}
  • 大概放在这个位置,这样小球碰到就可以更改颜色!(当然这个color changer也需要一个碰撞器,用来检测)

  • 环形的四部分也需要分别按照颜色名,上一个不同的Tag,用于和小球当前的颜色进行对比。

  • 关于生成颜色的方法如下:使用随机数,给小球当前颜色赋值。

private void SetRandomColor()
{int index = Random.Range(0, 4);switch (index){case 0:currentColor = "bule";sr.color = blueColor;break;case 1:currentColor = "yellow";sr.color = yellowColor;break;case 2:currentColor = "pink";sr.color = pinkColor;break;case 3:currentColor = "purple";sr.color = purpleColor;break;}
}
  • 再给终点的红旗一个碰撞体,并且给一个Tag给它,用来检测是否游戏胜利,胜利的话专门加载一个胜利的场景!
  • 记得将这个场景放入Build Setting中,不然加载不出来哦
    这样Player部分就完成啦!Player的完整代码如下:
/// <summary>
/// 小球跳动
/// </summary>
public class Player : MonoBehaviour
{public float jumpForce = 10f;public Rigidbody2D rb;public string currentColor;public SpriteRenderer sr;public Color blueColor;public Color yellowColor;public Color pinkColor;public Color purpleColor;private bool firstBegin = true;private void Start(){SetRandomColor();rb.gravityScale = 0;}private void SetRandomColor(){int index = Random.Range(0, 4);switch (index){case 0:currentColor = "bule";sr.color = blueColor;break;case 1:currentColor = "yellow";sr.color = yellowColor;break;case 2:currentColor = "pink";sr.color = pinkColor;break;case 3:currentColor = "purple";sr.color = purpleColor;break;}}private void Update(){if (Input.GetButton("Jump") || Input.GetMouseButtonDown(0)){if (firstBegin){rb.gravityScale = 3;firstBegin = false;}rb.velocity = Vector2.up * jumpForce;}}private void OnTriggerEnter2D(Collider2D col){//碰撞的对象colif (col.CompareTag("color changer")){SetRandomColor();Destroy(col);return;}if (!col.CompareTag(currentColor)){//回到出生点SceneManager.LoadScene(SceneManager.GetActiveScene().name);}if (col.CompareTag("win point")){SceneManager.LoadScene("Win");}}
}

4.关于摄像机部分

  • 小球一直上跳,当小球的高度高于摄像机时,摄像机应该跟随小球的y值进行上移动,因此再给摄像机一个这样的脚本,我们的游戏就完成了!
public class followPlayer : MonoBehaviour
{public Transform playerTransform;private void Update(){if (playerTransform.position.y > transform.position.y){transform.position = new Vector3(transform.position.x, playerTransform.position.y, transform.position.z);}}
}

【unity】分享一个2D小游戏的完整制作教程——小球跳圈相关推荐

  1. 【unity】分享一个2D小游戏的完整制作教程——涂鸦跳跃demo

    文章目录 前言 1.贴图准备 跳板的逻辑 人物的逻辑 相机的逻辑 如何自动生成跳板 如何赢得游戏 前言 这个只是练手的一个2D小游戏,不许商用哦 完成了原版的一个关卡的内容,跳板也只有一种,但是如果需 ...

  2. 一个2d小游戏c++

    #include<iostream> #include<windows.h> using namespace std; string fk[41][41]; string ba ...

  3. Unity中FPS类小游戏的简单制作

    1.摄像机放Player上,射线机代码 using UnityEngine; using System.Collections;public class Camera : MonoBehaviour ...

  4. 大家都在发圣诞树,我偏偏要发一个圣诞小游戏给大家玩【内附源码】

    ​大家好,我是辣条. 前言 圣诞节快来了,热榜都被一堆圣诞树攻占了,这样的流量密码我怎么会错过,大家都发圣诞树,我就不发啦,直接分享一个圣诞小游戏给大家玩,代码太长一定要先赞和收藏. 领取福利 300 ...

  5. 【phaser】快速实现HTML5 2D小游戏

    原文链接 前言 最近忙着看项目和写项目,在 github 上无意中发现了别人用 phaser 实现的2d小游戏,代码简单易懂,而且phaser框架本身就是非常的简单,非常适合想快速开发小游戏的开发者. ...

  6. 基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@[M_Studio]的教学视频

    基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@M_Studio的教学视频) 主要内容:在Sunnyland游戏的设计基础上,新增了物理组件Joint系列.DrawGi ...

  7. 「Unity2D」使用Unity创建一个2D游戏系列-1

    「Unity2D」使用Unity创建一个2D游戏系列-1 安装unity并且创建你的第一个场景 在第一章,你将会学习到一些非常基本的内容:首先是unity的下载和安装,其次是准备创建我们游戏内的第一个 ...

  8. Unity 之 转微信小游戏本地数据存储方法分享

    Unity 之 转微信小游戏本地数据存储 问题背景 微信小游戏读写本地文件 WebGL平台的一些限制 报错查看方法分享 问题背景 近期在将Unity转换为小游戏的时候发现在读写本地文件的时候,使用Ap ...

  9. 学习用C#在Unity中创建一个2D Metroidvania游戏

    学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...

最新文章

  1. C++类的构造函数不能为虚函数的原因
  2. [产品设计]为什么目前的运动手表的产品设计是错的?
  3. 四川网络推广介绍什么样的网站架构更能吸引蜘蛛爬行抓取?
  4. 细谈普通网站的后台构建实战----my note
  5. Python 3.10刚发布,这5点非常值得学习!
  6. dropdownlist三级联动怎么实现_一张表实现三级联动
  7. 切面是异步还是同步操作‘_分布式中采用Logback的MDC机制与AOP切面结合串联日志...
  8. 快递扫地机器人被损坏_手机动一动,全屋扫干净:石头T4扫地机器人体验记
  9. matlab中循环读入文件内容,[转载]Matlab利用load循环读入数据文件
  10. 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
  11. 蔡司数码视疲劳测试软件_居家办公期间,频繁使用电子数码产品小心患上这种眼病...
  12. 调用feign接口时,如何往header中添加参数
  13. 京东支付SDK重构设计与实现
  14. Android画板(三):WhiteBoard画板开源库
  15. 利用mongodb实现分布式WEB图片存储
  16. L1和L2简单易懂的理解
  17. 智慧城市同城小程序V4_1.0.86后端+双前端
  18. 四川托普计算机学校官网,四川中等职业技术学院
  19. 食品超声波设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 国际贸易中,FOB CFR CIF的区别是什么?

热门文章

  1. 电脑通过NOKIA手机(猫)利用GPRS无线上网
  2. 腾讯云Windows/Linux服务器登录方式及密码获取方法
  3. TiUP Cluster
  4. Spring逆向生成封装实体类
  5. caj转pdf功能实现
  6. iOS9.2 Beta2固件下载地址汇总 附更新内容
  7. 使用PS快速做出线稿图
  8. 开放式激光振镜运动控制器(五):ZMC408SCAN光纤激光器的能量控制
  9. 博士论文查重率标准是多少?
  10. 【幻灯片动画制作】Focusky教程 | 如何在Focusky中批量修改字体与换色?