unity2D跑酷游戏

项目成果 项目网盘

导入资源包 放入Assets文件Assets资源文件

游戏流程分析

摄像机size调小,让图片占满屏幕
人跑本质,相对运动,图片无限向右滚动
图片720,缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯

空对象BgControl,方便管理
reset
放两张图片
创脚本Bgcontrol,拖到该对象上
层级-10
脚本文件夹,c#脚本
地面对象
层级-5
碰撞组件box collider 2d,编辑碰撞器。
挂脚本
三个地面都拖成预设体
前两个地面固定,后一个随机
Prefabs预设体文件夹
ground拖进去
coin进去
切片
多张
sprite editor 
切片
应用
对象声音,挂脚本
单例
创建groundcontrol脚本
脚本挂到地面对象上
预设体相当于类和对象

背景 -10
地面  -5地面预设体给标签ground 碰撞器
声音 挂脚本
动画  窗口 跑 跳 死亡   过渡 设置参数
        无退出,过渡0,isjump true
主角  层级10  标签player 碰撞组件 刚体组件 冻结旋转 重力缩放2,只提供重力加速度,加脚本(跳跃,地面上才能跳跃,播放声音,动画切换),
button UI 原图像 原像素显示,过渡 精灵切换 高亮图像   点击 玩家的跳跃 导航none
金币 脚本 碰撞器 吃的触发
桌子 放1号地面上 碰撞器 标签地面 预设体  
     1地应用所有
死亡  空对象die 碰撞器 编辑触发器 标签die
   player脚本
敌人 圆形碰撞器 1地 标签enemy 1地应用所有 预设体 触发
层级
切片
 

脚本代码

PlayerControl

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerControl : MonoBehaviour
{//血量public static int Hp=1;//刚体组件private Rigidbody2D rbody;//动画组件private Animator ani;private bool isGround;void Start(){//获取刚体组件rbody = GetComponent<Rigidbody2D>();//获取动画组件ani = GetComponent<Animator>();}void Update(){//如果按了空格键if (Input.GetKeyDown(KeyCode.Space)){//跳跃Jump();}}//跳跃public void Jump(){if (isGround == true){//给刚体一个向上的力rbody.AddForce(Vector2.up * 400);//播放跳跃声音AudioManager.Instance.Play("跳");}}//发生碰撞private void OnCollisionEnter2D(Collision2D collision){//判断如果是地面if(collision.collider.tag=="Ground"){isGround = true;//结束跳跃ani.SetBool("IsJump", false);}//如果是死亡边界if(collision.collider.tag=="Die" && Hp > 0){//血量为0Hp = 0;////播放死亡声音AudioManager.Instance.Play("Boss死了");//播放死亡动画ani.SetBool("IsDie", true);}}//结束碰撞private void OnCollisionExit2D(Collision2D collision){//判断如果是地面if (collision.collider.tag == "Ground"){isGround = false;//开始跳跃ani.SetBool("IsJump", true);}}//如果碰到敌人private void OnTriggerEnter2D(Collider2D collision){if (collision.tag == "Enemy"){//血量为0Hp = 0;////播放死亡声音AudioManager.Instance.Play("Boss死了");//播放死亡动画ani.SetBool("IsDie", true);}}
}

CoinControl 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CoinControl : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}//如果产生触发private void OnTriggerEnter2D(Collider2D collision){//播放吃金币的声音AudioManager.Instance.Play("金币");//销毁自己Destroy(gameObject);}
}

AudioMnager

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AudioManager : MonoBehaviour
{//单例public static AudioManager Instance;//播放组件private AudioSource player;void Start(){//单例Instance = this;//获取播放组件player = GetComponent<AudioSource>();}//播放音效public void Play(string name){//通过名称获取音频片段AudioClip clip = Resources.Load<AudioClip>(name);//播放player.PlayOneShot(clip);}
}

BgControl

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class BgControl : MonoBehaviour
{//速度 每帧移动0.2像素public float Speed = 0.2f;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update()   //update是每一帧会调用一次{//如果玩家血量为0if(PlayerControl.Hp==0){return;}//遍历背景,背景就是子物体foreach (Transform tran in transform){//获取子物体的位置Vector3 pos = tran.position;//按照速度向左侧移动pos.x -= Speed * Time.deltaTime;  //每秒向左侧移动0.2//判断是否出了屏幕if (pos.x < -7.2f){//把图片移动到右边pos.x += 7.2f * 2;}//位置赋给子物体tran.position = pos;}}
}

GroundControl

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GroundControl : MonoBehaviour
{//速度public float Speed = 2f;//要随机的地面数组public GameObject[] GroundPrefabs;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update()   //update是每一帧会调用一次{//如果玩家血量为0if (PlayerControl.Hp == 0){return;}//遍历背景,背景就是子物体foreach (Transform tran in transform){//获取子物体的位置Vector3 pos = tran.position;//按照速度向左侧移动pos.x -= Speed * Time.deltaTime;  //每秒向左侧移动0.2//判断是否出了屏幕if (pos.x < -7.2f){//创建新的地面Transform newTrans = Instantiate(GroundPrefabs[Random.Range(0, GroundPrefabs.Length)], transform).transform;
// ,后transform确定父子关系   .后transform拿到新地面的transform组件//获取新地面的位置Vector2 newPos = newTrans.position;//设置新地面的位置newPos.x = pos.x + 7.2f * 2;//位置设置回去newTrans.position = newPos;//销毁旧的地面(出了屏幕的地面)Destroy(tran.gameObject);}//位置赋给子物体tran.position = pos;}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中&#xff0c;我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配&#xff0c;这在大大降低推理延迟的情况下保证了性能。此外&#xff0c;我们针对YOLO…

【计算机毕设】设计与实现基于SpringBoot的在线文档管理系统 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 在当今信息爆炸的时代&#xff0c;文档管理对于任何组织都至关重要。基于SpringBoot的在线文档管理系统的设计旨在为用户提供一个便捷、高效、安全的…

轻松拿捏C语言——【内存函数】

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正~~ 目录&#x1…

JVM学习-类加载过程(一)

概述 在Java中数据类型分为基本数据类型和引用数据类型&#xff0c;基本数据类型由虚拟机预先定义&#xff0c;引用数据类型则需要进行类的加载按Java虚拟机规范&#xff0c;从class文件加载到内存中的类&#xff0c;到类卸载出内存为止&#xff0c;它的整个生命周期包含以下7…

测试工具fio

一、安装部署 fio是一款优秀的磁盘IO测试工具&#xff0c;在Linux中比较常用于测试磁盘IO 其下载地址&#xff1a;https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz 或者登录其官网&#xff1a;http://freshmeat.sourceforge.net/projects/fio/ 进行下载。 tar -zxvf fio-…

【redis】宝塔,线上环境报Redis error: ERR unknown command del 错误

两种方式&#xff1a; 1.打开宝塔上的redis&#xff0c;通过配置文件修改权限&#xff0c;注释&#xff1a;#rename-command DEL “” 2.打开服务器&#xff0c;宝塔中默认redis安装位置是&#xff1a;cd /www/server/redis 找到redis.conf,拉到最后&#xff0c;注释#rename-co…

Flutter 验证码输入框

前言&#xff1a; 验证码输入框很常见&#xff1a;处理不好 bug也会比较多 想实现方法很多&#xff0c;这里列举一种完美方式&#xff0c;完美兼容 软键盘粘贴方式 效果如下&#xff1a; 之前使用 uniapp 的方式实现过一次 两种方式&#xff08;原理相同&#xff09;&#xff1…

二叉树链式结构的前序、中序、后序、层序遍历

文章目录 一、二叉树创建二、前序遍历概念以及解释代码 三、中序遍历概念及解释代码 四、后序遍历概念及解释代码 五、层序遍历概念及解释代码 一、二叉树创建 &mesp; 实现二叉树的遍历&#xff0c;我们要先手搓出一个二叉树&#xff0c;在次基础上实现二叉树的前序、中序…

【RLHF个人笔记】RLHF:Reinforcement Learning from Human Feedback具体过程

【RLHF个人笔记】RLHF:Reinforcement Learning from Human Feedback具体过程 RLHF训练的三个步骤步骤1&#xff1a;收集数据与有监督训练策略步骤2&#xff1a;收集数据训练奖励模型步骤3&#xff1a;结合奖励模型利用强化学习算法如PPO算法来优化策略 参考内容 RLHF训练的三个…

今年一定要做的副业兼职,1篇文章收入600,批量操作收入翻倍

随着公众号开放公域流量&#xff0c;流量主收入迅速攀升&#xff0c;吸引了众多投资者纷纷涌入这一领域&#xff0c;通过流量主赚取了丰厚的利润。上周&#xff0c;我曾向大家介绍了一些借助公众号流量主实现盈利的策略。 然而&#xff0c;公众号的盈利途径远不止流量主一种。…

数据库(14)——DQL排序查询

DQL排序查询语法 SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2; 排序方式 ASC&#xff1a;升序 DESC&#xff1a;降序 注&#xff1a;如果是多字段排序&#xff0c;当第一个字段值相同时&#xff0c;才会根据第二个字段进行排序。如果不写排序方式默…

图像处理ASIC设计方法 笔记27 红外非均匀校正的两点定标校正算法

非均匀性校正(Non-Uniformity Correction, NUC)是一种在图像处理和传感器校准中常用的技术,用于改善图像传感器(如CCD或CMOS相机)的输出质量。这种校正主要针对传感器在不同像素之间可能存在的响应差异,这些差异可能是由于制造过程中的微小不完美导致的。 基本原理: 响应…

MAB规范(2):Introduction 介绍

Chapter1 Introduction 1.1 指南目的 MathWorks咨询委员会&#xff08;MAB&#xff09;指南规定了Simulink和Stateflow建模的重要基本规则。这些建模指南的总体目的是让建模者和控制系统模型的使用者能够简单、共同地理解。 指南的主要目标是&#xff1a; • 可读性  提高…

CentOS8安装opensips 3.5

环境&#xff1a;阿里云 操作系统CentOS8.5 依赖包安装&#xff1a; libmicrohttpd cd /usr/local/src wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-latest.tar.gz tar vzxf libmicrohttpd-latest.tar.gz cd libmicrohttpd-1.0.1/./configure make make …

联芸科技偏高的关联交易:业绩波动性明显,海康威视曾拥有一票否决

《港湾商业观察》施子夫 5月31日&#xff0c;上交所上市审核委员会将召开2024年第14次审议会议&#xff0c;届时将审议联芸科技&#xff08;杭州&#xff09;股份有限公司招股书&#xff08;以下简称&#xff0c;联芸科技&#xff09;的首发上会事项。 据悉&#xff0c;此次系…

Github 2024-05-31 Java开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10TypeScript项目1JavaGuide - Java 程序员学习和面试指南 创建周期:2118 天开发语言:Java协议类型:Apache License 2.0Star数量:1…

Rust 第三方库创建和导入(cargo --lib)

前言 日常开发过程中&#xff0c;难免会有一些工具方法&#xff0c;多个项目之间可能会重复使用。 所以将这些方法集成到一个第三方包中方便后期维护和管理&#xff0c; 比如工具函数如果需要修改&#xff0c;多个项目可能每个都需要改代码&#xff0c; 抽离到单独的包中只需要…

SG7050EEN差分晶体振荡器:为5G路由器提供卓越的时钟源

随着5G技术的快速发展&#xff0c;5G路由器作为连接高速网络的重要设备&#xff0c;正迅速普及。为了确保5G路由器在高宽带和低延迟的网络环境中表现出色&#xff0c;选择一款高性能的晶体振荡器至关重要。爱普生推出的SG7050EEN差分晶体振荡器&#xff0c;以其高精度、低相位噪…

【linux软件基础知识】链表数据结构

双向循环链表 新链表是用LIST_HEAD(list_name)宏创建的。如上图中的(b)空链表所示,它申明类型为 list head的变量name,该变量作为新链表头的占位符。LIST_HEAD(list_name)宏还初始化 list head数据结构的 prev和next 字段,让它们指向list_name 变量本身。代码如下 #define…

0基础学习Elasticsearch-Quick start

文章目录 1 背景2 前言3 快速部署ES4 快速部署Kibana5 发送请求给ES5.1 打开Kibana控制台5.2 通过REST API发送请求5.3 通过curl发送请求5.4 添加数据5.4.1 添加单个document5.4.2 添加多个document 5.5 搜索数据5.5.1 搜索所有documents5.5.2 match查询 6 总结 1 背景 因电商项…