基于Unity的2d动画游戏-------------------c#开发

基于unity的2d动画制作----基于c#语言开发,类似于《DNF》的2d界面,目前只有一个游戏场景。成果图UI如下图所示在这里插入图片描述

游戏成果视频已经上传B站:

2dAnimation游戏

游戏开发主要步骤:

1.素材收集(来自Unity的Asset Store)

2.UI设计(随心所欲)

3.刚体碰撞规则等(csharp代码)

Hierarchy的整体结构如下:每个物体的名称和它的英文名大概一致。

在这里插入图片描述

脚本构造如下:在这里插入图片描述

部分PlayerController的代码如下:

`//author:刘家诚:date:2020.10.16

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//author:刘家诚:date:2020.10.16
public class PlayerController : MonoBehaviour
{//控制角色的移动,生命,动画等public float speed = 5f;//移动速度private int maxHealth = 5;//最大生命值private int currentHealth;//当前生命值private float invicibleTime = 2f;//无敌时间private float invincibleTimer;//无敌计时器private bool isInvincible;//是否无敌public GameObject bulletPrefab;//子弹//=====玩家的朝向=====private Vector2 lookDirection = new Vector2(1, 0);//不希望公开,但希望访问属性值public int MyMaxHealth{get{return maxHealth;}}public int MyCurrentHealth{get{return currentHealth;}}Rigidbody2D rbody;Animator anim;// Start is called before the first frame updatevoid Start(){//获取刚体组件rbody = GetComponent<Rigidbody2D>();currentHealth = 2;//初始生命值invincibleTimer = 0;rbody = GetComponent<Rigidbody2D>();anim = GetComponent<Animator>();}// Update is called once per framevoid Update(){//Time.deltaTime是计算机渲染一帧所需时间float moveX = Input.GetAxisRaw("Horizontal");//控制水平移动方向A:-1,D:1float moveY = Input.GetAxisRaw("Vertical");//控制水平移动方向w:1,s:-1Vector2 moveVector = new Vector2(moveX, moveY);//防止松手朝向改变if (moveVector.x != 0 || moveVector.y != 0){lookDirection = moveVector;}anim.SetFloat("Look X", lookDirection.x);anim.SetFloat("Look Y",lookDirection.y);anim.SetFloat("Speed", moveVector.magnitude);//根据向量大小来判断//=========移动==========Vector2 position = rbody.position;//position.x += moveX * speed * Time.deltaTime;// position.y += moveY * speed * Time.deltaTime;position += moveVector * speed * Time.deltaTime;rbody.MovePosition(position);//实现刚体的移动//==========无敌记时==========if (isInvincible){invincibleTimer -= Time.deltaTime;if (invincibleTimer < 0){isInvincible = false;//记录时间,2s后无敌时间消失}}//========按下j键进行攻击=========if (Input.GetKeyDown(KeyCode.J)){anim.SetTrigger("Launch"); GameObject bullet = Instantiate(bulletPrefab, rbody.position+Vector2.up*0.5f, Quaternion.identity);BulletController bc = bullet.GetComponent<BulletController>();if (bc != null){bc.Move(lookDirection, 300);}}}//改变玩家生命值public void ChangeHealth(int amount){//收到伤害if (amount < 0){if (isInvincible == true)//如果是无敌,则退出{return;}isInvincible = true;//变成无敌invincibleTimer = invicibleTime;}Debug.Log(currentHealth + "/" + maxHealth);//用Mathf约束一下currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);Debug.Log(currentHealth + "/" + maxHealth);}//与玩家的碰撞检测}```csharp
在这里插入代码片

EnemyController的部分代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//author:刘家诚:date:2020.10.16
//敌人控制相关
public class EnemyController : MonoBehaviour
{private float speed = 7;private Rigidbody2D rbody;//是否垂直public bool isVertical;public float changeDirectionTime = 2;private float changeTimer;//计时器private Vector2 moveDirection;//移动方向private Animator anim;private bool isFixed;//是否被修复// Start is called before the first frame updatevoid Start(){rbody = GetComponent<Rigidbody2D>();//获取刚体moveDirection = isVertical ? Vector2.up : Vector2.right;//判断是否垂直changeTimer = changeDirectionTime;anim = GetComponent<Animator>();//获取animisFixed = false;}// Update is called once per framevoid Update(){//被修复,不执行以下所有代码if (isFixed) return;changeTimer -= Time.deltaTime;if (changeTimer < 0){moveDirection *= -1;changeTimer = changeDirectionTime;}Vector2 position = rbody.position;position.x += moveDirection.x * speed * Time.deltaTime;position.y += moveDirection.y * speed * Time.deltaTime;rbody.MovePosition(position);anim.SetFloat("movex", moveDirection. x);anim.SetFloat("movey", moveDirection.y);}private void OnCollisionEnter2D(Collision2D collision){PlayerController pc = collision.gameObject.GetComponent<PlayerController>();if (pc != null){pc.ChangeHealth(-1);}}public void Fixed(){isFixed = true;rbody.simulated = false;anim.SetTrigger("fix");//播放被修复的动画}
}

BulletController的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//author:刘家诚:date:2020.10.16
/// <summary>
/// 控制子弹的移动
/// </summary>
public class BulletController : MonoBehaviour
{Rigidbody2D rbody;// Start is called before the first frame updatevoid Awake(){rbody = GetComponent<Rigidbody2D>();Destroy(this.gameObject, 2f);}// Update is called once per framevoid Update(){}public void Move(Vector2 moveDirection,float moveForce){rbody.AddForce(moveDirection * moveForce);}//=====碰撞检测=====private void OnCollisionEnter2D(Collision2D collision){EnemyController ec = collision.gameObject.GetComponent<EnemyController>();if (ec != null){Debug.Log("碰到敌人了");ec.Fixed();//修复敌人}Destroy(this.gameObject);}}

Dangerous的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//author:刘家诚:date:2020.10.16
public class Dangerous : MonoBehaviour
{//伤害陷阱// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}public void OnTriggerStay2D(Collider2D collision){PlayerController pc = collision.GetComponent<PlayerController>();if (pc != null){pc.ChangeHealth(-1);}}
}

Collectable的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//author:刘家诚:date:2020.10.16
public class CollectAble : MonoBehaviour
{//草莓被玩家碰撞时检测的相关类// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}private void OnTriggerEnter2D(Collider2D collision){//检测到有PlayerControllerPlayerController pc = collision.GetComponent<PlayerController>();if (pc != null){if (pc.MyCurrentHealth < pc.MyMaxHealth) {pc.ChangeHealth(1);Destroy(this.gameObject);}}}
}

一分一毛也是情,支持一下行不行 ~~

在这里插入图片描述

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

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

相关文章

【项目展示】基于Unity开发的3DRPG游戏

介绍 项目为大四毕业设计的游戏内容部分&#xff0c;使用Unity3D开发&#xff0c;总代码6000行&#xff0c;全部为自己实现&#xff0c;主要是一套简单的代码框架&#xff0c;具备一定的扩展性。游戏中填充了第一关的内容以展示功能。&#xff08;仍然有许多改进空间&#xff…

【游戏开发】2D RPG游戏

前言 通过对游戏《原神》的功能复刻来学习游戏开发 截止到10月&#xff0c;本项目已经开发的差不多了&#xff0c;不是开发的完善了&#xff0c;而是通过这个项目已经学会了Unity开发游戏的技巧&#xff0c;就不继续开发了。 这里展示一下目前的成果&#xff0c;并简述一下各…

Unity 3D 游戏与编程

3D 游戏与编程——作业二 1、简答题 1&#xff09;解释 游戏对象&#xff08;GameObject&#xff09;和 资源&#xff08;Assets&#xff09;的区别和联系 Assets 是游戏中具体的资源&#xff0c;比如 texture&#xff0c;mesh&#xff0c;material&#xff0c;shader&#x…

unity3d开发微信小游戏2

文章目录 前言一、开发的一些记录二、最终截图总结 前言 最开使用unity3d开发微信小游戏&#xff0c;遇到了一些问题&#xff0c;记录一下&#xff0c; 同时创建了一个交流群QQ 641029627&#xff0c;现在应该没人&#xff0c;有需要的可以加入一起讨论&#xff0c;广告哥远离…

Unity简单2D游戏开发

Unity简单2D游戏开发 前言&#xff1a; 近日比较无聊&#xff0c;在b站找了一个up主&#xff0c;跟着他的教程来做游戏——开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目&#xff0c;在Unity Asset Store中搜索下载 “Pixel Adventure ”&#xff0c;第一个就是…

Unity 开发微信小游戏初探

前言 最近因项目需要开始研究Unity开发微信小游戏相关的知识。期间遇到各种坑&#xff0c;网上查阅的资料基本类似&#xff0c;无法解决自己遇到的问题。特用本文记录下过程&#xff0c;方便其他人遇到同样的问题时能够参考。 开发环境 Unity 版本 根据微信小游戏插件文档推荐…

UNITY3D对接QQGame(PC)开发教程(2022)

效果 目标&#xff1a;能在UNITY3D里通过qqgame充值 因为目前还没有这类文章&#xff0c;所以填补这下块空白 文章包含 QQGame登录器的制作 QQGAME和UNITY3D的交互 QQGame平台用户信息的读取 支付规则&#xff0c;后台搭建。 和常见问题。 对接参考腾讯开发者有文档 https:/…

《Unity 2D与3D手机游戏开发实战》上架了。

新书上架了。 这本书主要是Unity开发的入门&#xff0c;附带了一个简单的2D例子&#xff0c;一个3D RPG的简单例子和一个尽可能用插件实现的射击游戏的例子。 书很薄&#xff0c;不过因为是彩页印刷&#xff0c;价钱不是那么实惠。不过说实话&#xff0c;因为这类书里面有很多…

Unity游戏开发 3D RPG(1-4)

如何将普通的3D项目升级到URP 在Package Manner 里的Unity Registry 里搜索 Universal RP ( 通用渲染管线Universal Render Pileline). 随后在Assets 新建Rendering ——URP Assets (with Universal Renderer) Edit -project setting -graphics,在Render pileline setting里…

Unity游戏开发:对话系统的实现

在解谜类游戏中&#xff0c;与npc的对话是一个基础且常用的功能。通常来说&#xff0c;在与npc的对话中玩家可以获取一些有价值的信息并对之后的游戏有一定的导向作用。此外&#xff0c;在玩家获取对应物品前后&#xff0c;与npc的对话内容也会发生相应改变。因此&#xff0c;我…

王小川大模型25天再升级!13B版本开源免费可商用,3090即可部署

衡宇 金磊 发自 凹非寺量子位 | 公众号 QbitAI 就在刚刚&#xff0c;王小川的开源大模型又有了新动作—— 百川智能&#xff0c;正式发布130亿参数通用大语言模型&#xff08;Baichuan-13B-Base&#xff09;。 并且官方对此的评价是&#xff1a; 性能最强的中英文百亿参数量开源…

苹果手机免越狱群控电脑端控制手机

据小编了解 &#xff0c;手机群控这个词一直受网上争议&#xff0c;那么今天小编也在这讨论一下&#xff0c;其实群控系统分很多&#xff0c;市面上有主板机群控&#xff0c;所谓的主板机群控系统是指把手机的主板全部集中到一个机箱控制&#xff0c;但这个就会留下很多弊端&am…

人工智能是否会取代人类的工作岗位?

跨国投资银行高盛预测&#xff0c;人工智能将取代3亿个全职工作岗位。依据是人工智能可以创造出与人类创建的内容无法区分的高水准内容。同一时期&#xff0c;IBM首席执行官阿文德克里希纳以人工智能聊天机器人可以取代7,800名员工为由停止了招聘。IBM并不是唯一一家“毫不犹豫…

第一位计算机科学博士诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 2 月 9 日&#xff0c;在中国&#xff0c;今天是道家学派创始人老子的诞辰和清代著名女词人顾太清的生日&#xff1b;在日本&#xff0c;写出《我是猫》的知名作…

用 100 行代码揭开 LLM 集成工具 LangChain 的神秘之处!

整理 | 王子彧 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; LangChain 是一个强大的程序框架&#xff0c;它允许用户围绕大型语言模型快速构建应用程序和管道。它直接与 OpenAI 的 GPT-3 和 GPT-3.5 模型以及 Hugging Face 的开源替代品&…

The missing quarter of a million 消失的25万 | 经济学人20230311版社论高质量双语精翻

文 / 柳下婴&#xff08;微信公众号&#xff1a;王不留&#xff09; 本期我们选择的是3月11日《经济学人》周报封面文章&#xff0c;即社论区&#xff08;Leaders&#xff09;的首篇文章&#xff1a;《25万英国人消失之谜》&#xff08;“The missing quarter of a million”&a…

哈佛计算机系王牌项目,要请AI来当导师了

克雷西 发自 凹非寺量子位 | 公众号 QbitAI 近日&#xff0c;哈佛宣布了一个重磅决定&#xff1a;AI导师将进入课程。 负责的还是计算机系的旗舰项目——计算机科学导论&#xff0c;也就是著名的CS50。 借助机器人导师&#xff0c;哈佛的CS50项目将拥有1:1的师生比。 这一消息是…

哈佛计算机系王牌项目,要请AI来当导师了!

来源 | 量子位 作者 | 克雷西 近日&#xff0c;哈佛宣布了一个重磅决定&#xff1a;AI导师将进入课程。负责的还是计算机系的旗舰项目——计算机科学导论&#xff0c;也就是著名的CS50。借助机器人导师&#xff0c;哈佛的CS50项目将拥有1:1的师生比。 这一消息是CS50项目导师Da…

机器学习吴恩达课程总结(一)

文章目录 1. 第一章 简介1.1 机器学习&#xff08;Machine Learning&#xff09;1.2 有监督学习&#xff08;Supervised Learning&#xff09;1.3 无监督学习&#xff08;Unsupervised Learning&#xff09; 2. 第二章 线性回归&#xff08;Linear Regression&#xff09;2.1 假…

吴恩达NLP课程资料

NLP_wuenda 1.简介 吴恩达老师在2020年6月份推出了NLP课程&#xff0c;Natural Language Processing Specialization  本人忙里偷闲将老师的视频和作业都完成了&#xff0c;后续会持续更新课程的资料和作业。目前NLP课程一共分为四门&#xff0c;每门课程会分为三&#xff08…