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

文章目录

  • 前言
  • 1.贴图准备
  • 跳板的逻辑
  • 人物的逻辑
  • 相机的逻辑
  • 如何自动生成跳板
  • 如何赢得游戏

前言

  • 这个只是练手的一个2D小游戏,不许商用哦
  • 完成了原版的一个关卡的内容,跳板也只有一种,但是如果需要的话可以往深了做的
  • 项目地址+Demo试玩(win64的exe在Client文件夹中)

1.贴图准备

  • 使用到的工具是ps,切一个板,切一个主人公,再找一个背景墙,这样材料就准备齐全了~
    在这里插入图片描述

跳板的逻辑

  • 将跳板放入场景中后,因为涉及到了碰撞,因此给一个碰撞体组件
    在这里插入图片描述

  • 之后有个细节,就是如果任务触碰到板子的下方,是不会算作踩到跳板获得向上的速度的!这个需求可以从两方面来实现(一个就是当角色下落的时候才判断碰撞回调;二就是使用到下面这个Platform Effector 2D啦)注意需要在collider中的use by effector打钩
    在这里插入图片描述

  • 最后再给板子一个tag,用来判断碰撞,这样就可以将板子作为预制件,然后拖走啦 ~
    在这里插入图片描述

人物的逻辑

  • 首先人物会受到重力作用,因此加入Rigibody2D组件,并给其一个重力规模
    在这里插入图片描述
  • 需要计算碰撞,因此给一个碰撞体!记得把Is Trigger勾上,不√的话,我们用不了碰撞回调的OnTriggerEnter2D方法,因为角色会停在板子上,不会进入!
    在这里插入图片描述
  • 下面我们给角色一个控制的脚本
  • 下面这个脚本的功能,有查看左右的越界(当左边越界的时候,角色会从右边出来,看起来左右地图不会出界,是联通的)
  • 当角色触碰到板子上的时候会得到一个向上的速度
  • 角色受到方向键的控制(细节:角色的朝向也会受到向左向右的影响)
public class Player : MonoBehaviour
{public Rigidbody2D rb;public float sensitive = 10f;private void Update(){PlayerController();//查看越界checkOverEdge();}private void checkOverEdge(){if (transform.position.x < -6f){transform.position = new Vector2(6f, transform.position.y);}if (transform.position.x > 6f){transform.position = new Vector2(-6f, transform.position.y);}}private void OnTriggerEnter2D(Collider2D col){//下落的时候才计算碰撞。不然角色只要碰到东西就会往上飞if (rb.velocity.y <= 0){if (col.CompareTag("board")){rb.velocity = new Vector2(0f, 10f);}}if (col.CompareTag("win")){SceneManager.LoadScene("Win");}}private void PlayerController(){float horizontalAxis = 0;horizontalAxis = Input.GetAxis("Horizontal");if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow)){transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));}if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow)){transform.rotation = Quaternion.Euler(new Vector3(0, 180, 0));}rb.velocity = new Vector2(horizontalAxis * sensitive, rb.velocity.y);}

相机的逻辑

  • 相机的话就跟上一个小球跳圈的游戏是一样的道理,如果角色y大于相机y,那么相机跟着向上走
  • 角色如果一下子跌落(与相机的y轴相差一定的大小,记作失败,重新加载游戏场景),游戏回到起点~
public class PlayerFollow : MonoBehaviour
{public Transform PlayerTransform;private Vector3 currentVelocity;public Rigidbody2D playerRigidbody2D;private void LateUpdate(){if (PlayerTransform.position.y >= transform.position.y){Vector3 tmpv = new Vector3(transform.position.x, PlayerTransform.position.y, transform.position.z);transform.position =Vector3.SmoothDamp(transform.position, tmpv, ref currentVelocity, .3f * Time.deltaTime);}//掉入谷底,回到原点if (PlayerTransform.position.y < transform.position.y - 3f){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);}}
}

如何自动生成跳板

  • 在场景中,专门有个空物体是用来自动生成板子的。就是个空物体,放在原点就好,方便地图生成。
    在这里插入图片描述

  • 这里生成地图的逻辑是在游戏开始的时候,在Start的时候就将本关卡所有的板子位置生成好了

  • 在下面脚本中,按照一定的高度差,和一定的水平差随机生成numberOfPlatforms-1数量的板子,并在最后一次生成一个win point(在游戏中就是一面红旗,触碰到了算胜利!)

  • 游戏中的板子水平距离不能太宽,不然跳不过去,因此这里写个while循环,如果生成过宽,则重新生成。

public class LevelGenerator : MonoBehaviour
{public GameObject platformPrefab;public int numberOfPlatforms;public GameObject winPointPrefab;public float levelWidth = 3f;public float minY = .2f;public float maxY = 1.8f;private float lastx;private void Start(){Vector3 spawnPosition = new Vector3();for (int i = 0; i < numberOfPlatforms; i++){spawnPosition.y += Random.Range(minY, maxY);float tmpx = Random.Range(-levelWidth, levelWidth);while (Math.Abs(tmpx - lastx) > 4f){tmpx = Random.Range(-levelWidth, levelWidth);}lastx = tmpx;spawnPosition.x = tmpx;if (i == numberOfPlatforms - 1){//生成win pointInstantiate(winPointPrefab, spawnPosition, Quaternion.identity);}else{Instantiate(platformPrefab, spawnPosition, Quaternion.identity);}}}
}

如何赢得游戏

  • 做一个标志物(这里用的是红旗),给其一个tag,作为预制体,被自动生成
  • 当角色触碰到后,加载win场景~

  • 这样好玩又解压的Demo就大功告成啦!具体可以查看工程代码~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353758.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

vb鼠标涂鸦板的制作

实验要求 掌握使用Picture1_MouseDown语句/Picture1_MouseUp&#xff0c;Picture1_MouseMove语句和Command Dialog的实现方法。实现鼠标画图程序。编写实验报告。 效果 清除画布的代码&#xff08;本实验没添加这个功能&#xff0c;留着备用&#xff09; Privte Sub Command…

制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

实现的功能&#xff1a; l APP控制月球灯 l 本地月球灯控制 l APP控制“大白”颜色&#xff0c;实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯&#xff0c;连接服务器长亮&#xff0c;断开后闪烁 l 配网按键 l 云端定时功能 l 云端报警提示功能…

Arduino+涂鸦云,教你制作幻彩灯带

大家好&#xff0c;我是程序员小哈。前一阵参加了涂鸦智能【幻彩灯带】Arduino开发实战训练营&#xff0c;参与完整个过程&#xff0c;收获颇丰&#xff0c;今天对本次制作的幻彩灯带进行一下小结&#xff0c;希望以后可以再次参与其他内容的训练营活动。 概况 本次DIY内容为基…

Unity实现在白板上绘画涂鸦

前言 有段时间没有更新博客了&#xff0c;不知道应该写些什么&#xff0c;太简单感觉没有记录的必要&#xff0c;太难自己都没能理解&#xff0c;不知道如何下手。回归初心&#xff0c;记录自己想记录的东西。 需要实现一个白板绘画的功能&#xff0c;可以使用LineRenderer或者…

手机怎么使用涂鸦?分享几个手机视频怎么添加涂鸦的妙招

相信大家在给视频进行处理时&#xff0c;都会运用一些视频剪辑工具来给视频增添一些涂鸦等效果&#xff0c;比如把云朵涂鸦成独角兽或者与其相似的图案&#xff0c;让那些观看我们视频的人在视觉上增加了些许乐趣&#xff0c;不会显得视频画面太过于枯燥乏味。 那你们知道这些…

使用Fabric.js库制作一个绘画网站,实现绘画板涂鸦功能

1.学习之前 这个功能是基于vue的&#xff0c;如果你没有学过vue&#xff0c;可能对里面的知识不理解&#xff0c;对于canvas要有一点点的理解&#xff0c;如果没有&#xff0c;建议学习一下 如果实在需要关于Fabricjs写的绘画功能&#xff0c;可以看一下我参考其他人写的文档&a…

视频涂鸦怎么弄?视频涂鸦用什么软件?

随着时代的发展&#xff0c;大众对于“艺术”这个词的诠释也会变得不同。这段时间里&#xff0c;我的朋友在朋友圈、微博发布的视频都带有浓浓的个人风格&#xff0c;但总体上都是依据“涂鸦”这一形式来进行的。通过在视频中绘制涂鸦&#xff0c;来抒发内心的情绪、展示对艺术…

如何用ps做出街头涂鸦效果

制作过程大概几分钟时间即可搞定&#xff0c;我们主要用的是陌鱼社区街头涂鸦喷绘行为艺术效果PS动作&#xff0c;需要的可以搜一下应该可以找到&#xff0c;下面是效果&#xff1a; 01、载入我们下载文件包时面的预设文件&#xff0c;包括笔刷、图案、动作&#xff0c;关闭Ps软…

ROS:坐标管理系统

目录 一、机器人中的坐标变换二、TF功能包2.2TF功能包简介2.2TF坐标变换实现2.3TF案例 三、小海龟跟随实验3.1打开小程序3.2查看当前的TF树3.3坐标相对位置关系可视化1&#xff08;tf_echo&#xff09;3.4坐标相对位置关系可视化2&#xff08;rviz&#xff09; 一、机器人中的坐…

人事管理项目-前端实现

人事管理项目-前端实现 引入Element和Axios开发Login页面配置路由配置请求转发启动前端项目 引入Element和Axios 前端UI使用Element&#xff0c;网络请求则使用Axios&#xff0c;因此首先安装Element和Axios依赖&#xff0c;代码如下&#xff1a; 依赖添加成功后&#xff0c;接…

妖精的尾巴手游快速升级辅助 爱蜂窝自动新手挂机升级

妖精的尾巴手游上线了&#xff0c;是一款特别火的手游&#xff0c;那么如果才能快速升级&#xff0c;迅速提升战斗力呢&#xff0c;主要依靠游戏里面的这些内容。 方式一&#xff1a;主线任务 主线任务是快速升级中速度最快的&#xff0c;能获得大量的经验和等级&#xff0c;后…

妖精的尾巴勇气之旅服务器维护,妖精的尾巴勇气之旅攻略大全 新手攻略开局发展技巧[多图]...

妖精的尾巴勇气之旅怎么玩&#xff0c;作为一个新手玩家来说的话&#xff0c;在开局的时候要做些什么会比较的好&#xff0c;如何能够更好的上手&#xff0c;带来一个比较好的发展&#xff0c;也可以为后续的阶段起到一个比较不错的铺垫呢&#xff1f;下面来了解下&#xff01;…

【妖精的尾巴win7动漫主题】

主题描述&#xff1a;本主题是由主题世界win7主题下载独家原创制作而成 本地下载 迅雷下载 妖精的尾巴win7动漫主题介绍 妖精的尾巴卡通桌面壁纸下载《鼠标右键另存为本地》 妖精的尾巴卡通桌面主界面效果图 妖精的尾巴卡通桌面开始菜单效果图 妖精的尾巴卡通桌面图标效果图 妖…

智能算法实现PID智能车控制系统

目录 第一章 绪论 1.1 智能车概述 1.2 智能PID研究现状 1.3 本文工作 第二章 PID控制简介 第三章 内模PID简介 3.1 内模PID控制 第四章 内模智能PID智能车控制系统设计 4.1 系统设计 4.2 内模控制原理 第五章 系统仿真及结果分析 5.1 系统仿真分析 5.2 控制效…

Linux Shell 实现一键部署mariadb10.11

mariadb MariaDB数据库管理系统是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可 MariaDB的目的是完全兼容MySQL&#xff0c;包括API和命令行&#xff0c;使之能轻松成为MySQL的代替品。在存储引擎方面&#xff0c;使用XtraDB来代替MySQL的Inno…

简单聊一聊数据库驱动

数据库驱动通常是数据库厂家提供的&#xff0c;他们按照jdbc协议对自家数据库封装了一套可对外调用的API。在应用程序和数据库之间起到了桥接的作用。它是一个软件组件&#xff0c;提供了与特定数据库系统进行通信的接口和功能。 1. 数据库驱动的作用&#xff1a; 连接数据库&…

科研工具-R-META分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

如何查看文件的MD5值?

MD5 什么是MD5&#xff1f; md5是一种信息摘要算法&#xff0c;是计算机广泛使用的杂凑算法之一&#xff08;又译摘要算法、哈希算法&#xff09;&#xff0c;它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串&#xff08;这个特殊的字符串就被称之为摘要&…

查看文件的MD5 值

从网上下载到资源文件后&#xff0c;为了确保下载的文件没有被黑客非法篡改&#xff0c;一般都会校验一下MD5是否与最初上传的版本是否一致。查看两个文件的MD5 值可以判断文件在传输过程中有没有损坏&#xff0c;或者丢失字节。 Windows电脑 window&#xff08;键盘左下角Ctr…