cocos2d-x 4.0 学习之路(十七)第一个小游戏--忍者来袭--升级改造

本文主要是介绍cocos2d-x 4.0 学习之路(十七)第一个小游戏--忍者来袭--升级改造,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

还记得我们的第一个小游戏–忍者来袭吗?
那个有点太Easy了,敌人对主角一点威胁都没有。那我们今天就改造一下,让敌人也会发子弹,而且一旦敌人的子弹或者敌人碰到主角的话,就Game Over.
首先,我们想一下如何设计,让敌人也会发飞镖?我想要的效果是敌人在移动的过程中,随机位置发射一枚飞镖。

我最开始的想法是,在addMonster()中,做一个敌人的飞镖精灵,它的起始点是敌人随机移动的位置,终点当然是player的位置。但是,Moster是一直在运动的,如何设定飞镖的起始点让我犯了愁。后来我意识到,飞镖是敌人发出来了,那么可以把发射飞镖作为monster的一个动作,加到动作序列(Sequence)里面啊。于是,用CallFunc写个回调函数shootStar,在shootStar里面写发射飞镖,这样运行起来符合预期而且代码也很容易理解。

那么修改代码思路如下:原来monster只有一个MoveTo的Action,那我们改成MoveTo -> shootStar -> MoveTo这样的动作序列不就结了。而且前半段MoveTo的距离是随机产生的。于是代码如下:

    // 2 Let monster runint maxX = selfContentSize.width;int randomX = maxX - (rand() % (int)(maxX / 2));float monsterSpeed = 160;float randomDuration2 = (float)randomX / monsterSpeed;float randomDuration1 = (float)(maxX - randomX) / monsterSpeed;auto move1 = MoveTo::create(randomDuration1, Vec2(randomX, randomY));auto move2 = MoveTo::create(randomDuration2, Vec2(-monsterContentSize.width / 2, randomY));// 定义消除的Object。怪物移出屏幕后被消除,释放资源。auto actionRemove = RemoveSelf::create();// Shoot Enemy's Projectileauto shootStar = CallFunc::create([=]

这篇关于cocos2d-x 4.0 学习之路(十七)第一个小游戏--忍者来袭--升级改造的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/721602

相关文章

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

升级至三频BE12000! 华硕ROG魔盒Pro路由器首发拆解评测

《升级至三频BE12000!华硕ROG魔盒Pro路由器首发拆解评测》华硕前两天推出新一代电竞无线路由器——ROG魔盒Pro(StrixGR7Pro),该产品在无线规格、硬件配置及功能设计上实现全... 作为路由器行业的T1梯队厂商,华硕近期发布了新旗舰华硕ROG魔盒Pro,除了保留DIY属性以外,高达120