【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版1(附带项目源码)
创始人
2024-11-16 07:34:00
0

最终效果

在这里插入图片描述

系列导航

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结)

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版11

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版10

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版9

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版8

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版7

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版5

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版4

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版2

制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版1

文章目录

  • 最终效果
  • 系列导航
  • 前言
  • 素材
  • 简单搭建环境
  • 豌豆射手
  • 向日葵
  • 源码
  • 结束

前言

在游戏界,有些作品以其独特的创意和精彩的游戏体验,成为了经典中的经典。而《植物大战僵尸》就是其中的佼佼者,它以其独特的塔防玩法和富有趣味性的设计,吸引了全球无数玩家的喜爱。

植物大战僵尸系列每隔一段时间,总是会在不经意间突然爆火,比如之前的植物大战僵尸随机版,还有最近火出圈的植物大战僵尸杂交版。其实之前就有很多小伙伴一直问我关于植物大战僵尸的一些问题,突然想起来确实也没做过相关内容,然后就抓紧出了这个系列,希望看完本系列,你也能制作出带自己特色的植物大战僵尸版本。

在这个项目中,我们将借助Unity引擎,以致敬之心,重新打造这款不朽的经典游戏。通过复刻《植物大战僵尸》,我们不仅是在向这部经典之作致敬,更是在探索游戏设计的魅力与深度。在这个过程中,我们将学习如何设计多样化的植物和僵尸角色,构建引人入胜的关卡设计,以及打造出一款令人回味无穷的游戏体验。

本项目旨在让玩家们重温童年的回忆,感受到游戏带来的乐趣和挑战。无论你是喜爱原作的老玩家,还是对于游戏开发感兴趣的新手,都将在这个项目中找到属于自己的乐园。希望通过这个项目,能够唤起你对于游戏的热爱与回忆,让我们一起迎接这场植物与僵尸的精彩对决!

本节主要是实现简单搭建环境 一些植物行为

素材

链接:https://pan.baidu.com/s/1ZtvR0dzGEx5irAmNJ_SJzQ?pwd=ezet
提取码:ezet

简单搭建环境

其实就是放置一个背景图片,可以选择调整摄像机视野大小
在这里插入图片描述

在这里插入图片描述

豌豆射手

新增PeaBullet,控制豌豆子弹发射

public class PeaBullet : MonoBehaviour {     public Vector3 direction; //发射方向     public float speed;//速度          void Update()     {         transform.position += direction * speed * Time.deltaTime;     } } 

配置
在这里插入图片描述
新增PraShooter,控制子弹发射

public class PraShooter : MonoBehaviour {     public float interval; //攻击间隔     public Transform bullet;//子弹预制体     public Transform bulletPos;//子弹生成位置     public float attackDistance;//攻击距离     public LayerMask layerMask;//检测图层      private void Start()     {         StartCoroutine(Attack());     }      IEnumerator Attack()     {         while (true)         {             Shoot(); // 执行射击操作             yield return new WaitForSeconds(interval); // 等待interval秒         }     }      void Shoot()     {         RaycastHit2D hit = Physics2D.Raycast(bulletPos.position, Vector2.right, attackDistance, layerMask); // 发射射线         //射线检测攻击范围是否有敌人         if (hit.collider != null)         {             if(hit.collider.CompareTag("Enemy")) Instantiate(bullet, bulletPos.position, Quaternion.identity); // 生成子弹         }     }      void OnDrawGizmosSelected()     {         Gizmos.color = Color.red;         Gizmos.DrawLine(bulletPos.position, bulletPos.position + Vector3.right * attackDistance); // 绘制持久化的射线提示     } } 

配置
在这里插入图片描述

效果
在这里插入图片描述

向日葵

向日葵分为待机和生产的动画,配置好切换动画
在这里插入图片描述
新增SunFlower代码,控制一段时间,在向日葵随机附近位置生成阳光

public class SunFlower : MonoBehaviour {     public float interval; //攻击间隔     public Transform sunshine;//阳光预制体     public float produceDistance;//产生距离     Animator animator;      private void Start()     {         animator = GetComponent();         StartCoroutine(Produce());     }      IEnumerator Produce()     {         while (true)         {             yield return new WaitForSeconds(interval); // 等待interval秒             animator.SetTrigger("produce");//播放动画         }     }      //产生阳光     public void ProduceSunshine()     {         // 在单位圆内生成随机点         Vector2 randomPoint = Random.insideUnitCircle * produceDistance;         // 将随机生成位置         Vector3 spawnPosition = new Vector3(randomPoint.x, randomPoint.y, 0f) + transform.position;          Instantiate(sunshine, spawnPosition, Quaternion.identity); // 生成阳光     } } 

配置生产动画,添加事件调用ProduceSunshine,产生阳光
在这里插入图片描述
挂载脚本,配置参数
在这里插入图片描述
新增sun代码,控制阳光一定时间后自动消失

public class Sun : MonoBehaviour {     public float interval; //间隔      void Start()     {         StartCoroutine(SetDestroy());     }      IEnumerator SetDestroy()     {         yield return new WaitForSeconds(interval); // 等待interval秒         Destroy(gameObject);     } } 

挂载脚本,配置参数
在这里插入图片描述

效果
在这里插入图片描述

源码

源码不出意外的话我会放在最后一节

结束

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

相关内容

热门资讯

终于找到“微信炸金花链接怎样弄... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡...
微信上金花房卡怎么来的/金花房... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
一分钟推荐“在哪里买炸金花房卡... 长虹大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来...
终于找到“购买斗牛房卡联系方式... 悠悠互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
ia实测“购买斗牛房卡联系方式... 狂飙大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
正版授权“牛牛金花房卡是如何购... 新星游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
金花房卡在哪获取/微信链接金花... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
一分钟了解“购买斗牛房卡联系方... 随意玩俱乐部是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买...
一分钟推荐“微信斗牛房间怎么弄... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来...
一分钟了解“微信牛牛链接怎么制... 超圣大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来...
牛牛金花房卡链接在哪买/微信斗... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
微信斗牛牛房卡使用教程/微信炸... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡...
玩金花牛牛15元100张房卡代... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
金花链接的房卡在哪里买的/在哪... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
终于找到“微信金花房卡链接使用... 新众乐牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡...
ia实测“微信牛牛房卡购买方法... 新九天是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享...
微信炸金花房卡到哪里买/微信链... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...
终于找到“金花大厅房卡链接在哪... 超圣大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
安卓系统机备用机,智能生活双倍... 你有没有想过,当你的安卓手机突然罢工,或者你急需一台备用机来处理一些紧急事务时,你会怎么办呢?别急,...
微信链接斗牛房卡开科技/微信金... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...