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

相关文章

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O