cocos2d-x 地图随英雄移动

2023-10-27

本人刚开始学习cocos2d-x游戏引擎,学到瓦片地图这块,网上有一个很经典的例子,见链接:基于Cocos2D-X的砖块地图教程(一)

在看到其中的地图跟随角色移动(一般情况下保持角色在屏幕中央附近,到地图边缘时移动角色)的问题时看的不大明白,自己搞了好久才搞懂,这里我已经将代码注释,希望对跟我一样的新手有所帮助。

代码如下:

void TiledMapTestScene::setCneterPointOfView( CCPoint p )
{
//因为这里是要通过传入的点p来显示设定CCLayer的位置,p为英雄坐标,当做显示中心点。
//TileMap的size肯定大于WinSize(分辨率),不然有黑边,而且也不用移动地图了。
//因此p的x、y的值肯定要大于等于屏幕中心的值

int x = MAX(p.x , winSize.width / 2);
int y = MAX(p.y , winSize.height / 2);

//同理,p的x、y要小于等于TileMap的size的宽高减去WinSize的中心值,不然也会出现黑边
x = MIN(x,mapSize.width * tileSize.width - winSize.width / 2);
y = MIN(y,mapSize.height * tileSize.height - winSize.height / 2);

/*这里是用地图中心的真实坐标减去屏幕中心坐标来得到两个中心之差(
真实中心肯定为屏幕中心右上部),得到的差值就是TileMap的偏移值(其x、y都为非正数)。
重点:由于CClayer为了初始化位置是始终显示到屏幕左下角方便,因此其锚点为(0,0),
刚好可以把以上求得的偏移值作为其坐标。
*/
CCPoint actualPosition = ccp(x,y);
CCPoint winCenter = ccp(winSize.width / 2 , winSize.height /2);
CCPoint viewPosition = ccpSub(winCenter,actualPosition);

this->setPosition(viewPosition);
}

好了,大概就这样了,相信初学者也可以看明白的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocos2d-x 地图随英雄移动 的相关文章

  • Unity 使用LineRenderer连接2个物体

    1 在Hierarchy面板中创建2个GameObject A和B 这就是希望连接的2个物体 2 同理创建1个EmptyObject C 挂上LineRenderer组件 记得给Materials赋值 3 创建1个新的C 脚本LineMan
  • 高德地图打点获取点的坐标和名称

    一 首先引入地图 代码在最后 二 然后是打点获取坐标和名称的方法 代码在最后 重点 如果不加上密钥的话可能会得不到数据名称 你想要的代码来了 密钥 window AMapSecurityConfig securityJsCode 你申请ke
  • unity 使用vrtk4的插件 打包htv vive VR客户端包,手柄不生效

    背景 目的 u3d使用vrtk开发pico应用 vrtk是为了到时候无缝衔接后续要买的htc vive pro 2 先导入了tilia importer 也就是vrtk4 0 根据教程模块化使用功能 和pico官网下的 PICO Unity
  • 浅解cocos2d-x中的CCSprite绘制原理

    cocos2d x版本为2 0 4 此画图调用的是opengl es 2 0版本 支持三角形画图 故必须有一个顶点数组 此定义定义在CCSprite h中 ccV3F C4B T2F Quad m sQuad 而这个顶点数组的定义为 4 c
  • Openframework在VS2010中的配置

    Openframework在VS2010中的配置 首先去官网下载Openframework 下载后最好解压到C盘根目录下 不然会出现各种问题 我也不知道怎么解决 随便打开其中的例程 然后右击该工程 选择属性 如下图 接着在C C 常规选项里
  • 【Unity2d】带你制作一款类似于金山打字的小游戏

    博主大概08年开始接触电脑游戏 当时玩的是我哥的电脑 那时候家里没网 只可以玩电脑上自带的单机游戏 比如扫雷 蜘蛛纸牌等等 当然还有红色警戒 冰封王座 星际争霸 帝国崛起等等 这些大概是我哥当时在大学下载的 也是那个时候对游戏充满了兴趣 记
  • ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial UE5 Starter Course 教程大小解压后 4 96G 语言 英语 中英文字幕 机译 时长 4小时56分 1920X1080 mp4 虚
  • Unity 资源加载卸载过程

    什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
  • Unity 安卓打包

    Unity打包的方式有很多种 自动打包和手动打包 今天小弟就鼓捣鼓捣unity手动打包 如果想动态打包的话 可以去看其他大佬的帖帖哈 unity打包先配置环境 下载unity的时候可以顺道把unity的安卓包下载下来 如果忘了也没事 可以从
  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • Cocos2D-x 3.0 中图元和精灵的 Z 索引不一致?

    我有两层 每个图层都有一个使用 OpenGL 进行的原始绘图 如下所示 void Layer1 drawPolygon glLineWidth 1 DrawPrimitives setDrawColor4B 255 255 255 255
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • SSL 归档符号表错误(运行 ranlib)

    我构建了 OpenSS1 0 2g智能狐客户端 http smartfoxserver com API 1 6 3 Cocos2dx v3 Android Windows 10 64 位 它抛出错误 SSL 归档符号表错误 运行 ranli
  • 如何使用 Marmalade 编译 Cocos2d-X?

    有谁知道教程 或者三个简单的步骤来编译我用 Cocos2d x 和 Marmalade 编写的代码 我想将我已经在 Cocos2d X 中编译和使用的代码插入到 marmalade 项目中 然后进行编译 很多地方都写得很简单 但我却很难做到
  • 如何制作双向平台box2d主体?

    我使用 box2d 创建了平台 我想要 box2d 身体检测而不是动态检测 Box2d 形状将执行以下操作 在某些条件下检测碰撞 在某些情况下不检测碰撞 两种条件都适用于同一 box2d 对象中的不同条件 任何想法都会有很大帮助 提前致谢
  • VS2022 | 显示Unreal Engine日志

    VS2022 显示Unreal Engine日志 视图 gt 其他窗口 gt Unreal Engine日志 视图 gt 其他窗口 gt Unreal Engine日志
  • 由于资源文件权限被拒绝,Cocos2D-x HelloCpp for Android 无法从 Windows 构建 apk

    我试图在 Android 上运行 cocos2dx HelloCpp 示例项目 从 Windows 7 64 位和 Cygwin 64 位构建 但是 每次我尝试构建和运行时 它都会抱怨资产中的 Marker Felt fnt 文件的权限被拒

随机推荐

  • MySQL优化浅析

    1 场景简介 最近在使用Storm做日志的分析处理 众所周知 Storm是流式的处理框架 也就是每次只能处理和看到一条日志 然而做分析的时候 不可避免的要进行一些统计操作 如统计一分钟内某个ip的访问频率或者某个uid的访问频率等 于是我就
  • jquery html 清除样式,jquery怎么移除css样式

    jquery移除css样式的方法 1 通过使用 removeClass 方法去除css样式 2 通过使用 attr 方法或 css 去除单个css样式 本文操作环境 Windows7系统 jquery3 2 1版 DELL G3电脑 1 使
  • mybatis框架下select带in批量查询,返回结果集顺序与in不一致问题

    mybatis框架下select带in批量查询 返回结果集无序问题
  • 使用mybatis时paramType传入参数总结

    mybatis中SQL接受的参数分为 1 基本类型 2 对象 3 List 4 数组 5 Map 无论传哪种参数给mybatis 他都会将参数放在一个Map中 如果传入基本类型 变量名作为key 变量值作为value 此时生成的map只有一
  • Unhandled exception: Unable to determine ZooKeeper ensemble

    zookeeper hbase开启并正常 但是运行报错 17 04 24 20 13 23 ERROR master HMaster Region server icosa4 60020 1493045002304 reported a f
  • 金蝶,「起舞」在大模型时代

    在过去的几年时间里 基于EBC的平台能力 金蝶已经走出了一个新的进化之路 这条路是对自身产品竞争力的重新构建 也更是对企业数字化转型需求的更大程度满足 如今 苍穹GPT大模型更是让这种竞争力和服务力更向前一步 作者 皮爷 出品 产业家 6个
  • 2016腾旭研发工程师笔试题

    用C C 代码算出满足上述条件的值 我们首先来分析一下 step0 我们可以得到如下方程 step1 由方程 1 3 6 可得 我们可以把x1 x5 x6看成自变量 x2 x8 x7看成对应的函数 这样只要x1 x5 x6确定了 x2 x8
  • 常见的垃圾回收机制总结

    如何工作 在某些 Java 虚拟机中 堆的实现截然不同 它更像一个传送带 每分配一个新对象 它就向前移动一格 这意味着对象存储空间的分配速度特别快 Java 的 堆指针 只是简单地移动到尚未分配的区域 所以它的效率与 C 在栈上分配空间的效
  • (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)

    1 代码功能 输入 一个字符串 输出 codeword 码值 codeword所占的位数 2 代码框图 3 代码超详解 统计字符串中的字符种类 调用函数 放入数组b中 b unique str1 统计每种字符的个数 放入数组a中 for i
  • PTA L1-016 查验身份证(详解)

    前言 本期是关于查验身份证的详解 内容包括四大模块 题目 代码实现 大致思路 代码解读 今天你c了吗 题目 一个合法的身份证号码由17位地区 日期编号和顺序编号加1位校验码组成 校验码的计算规则如下 首先对前17位数字加权求和 权重分配为
  • 计算机网络(第七版)谢希仁编著(转载请注明出处---https://www.cnblogs.com/qingl)...

    计算机网络复习 第七版 谢希仁编著 转载请注明出处 https www cnblogs com qingl 第一章 P39 1 15 假定网络的利用率达到了90 试估算一下现在的网络时延是它的最小值的多少倍 解 设网络利用率为U 网络时延为
  • 网络规划设计与综合布线技术详解

    一 网络工程概述 1 计算机网络及其组成 计算机网络是现代通信技术与计算机技术相结合的产物 随着计算机网络本身的发展 人们认为 计算机网络是把地理位置不同 功能独立自治的计算机系统及数据设备通过通信设备和线路连接起来 在功能完善的网络软件运
  • jQuery 绑定3种表单事件 change(value值改变),focus(获到焦点),blur(失去焦点)

    1 change 说明 元素的value值改变时 触发change事件 change事件只适用于文本框 text 文本域 textarea 下拉框 select 元素 语法 selector change function1 实例 文本框
  • 编译原理——词法分析器

    1 概述 设计 编制并调试一个简单的C语言词法分析程序 掌握利用状态转换图设计词法分析器的基本方法 利用该词法分析器完成对源程序字符串的词法分析 通过对该词法分析器的设计 加深对词法分析原理 状态转换图等编译原理知识的理解 2 使用的基本概
  • 最新bilibili怎么下载视频

    bilibili作为最火的二次元网站 很多人想下载下来 却不知道怎么下手 今天小编就来818怎么下载bilibili的视频 1 我们拿这案例来参考 https www bilibili com video av40672186 from s
  • d3碰撞源码分析

    技术 d3 d3 force d3 geom quadtree d3 geom quadtree 四叉树的应用 图像处理 空间数据索引 2D中的快速碰撞检测 存储稀疏数据等 游戏编程 上图中的数据就是普通的点 点与点之间没有关系 此函数在构
  • TOJ--3100:Getting Gold (DFS)

    1 题目源地址 http acm tju edu cn toj showp3100 html 2 源代码 TOJ 3100 Getting Gold include
  • httprunner接口自动化测试框架使用说明【保姆级教程】

    背景介绍 httprunner是国内开源的一个接口自动化框架 已经有部分公司开始使用这种框架来完成自己公司的接口自动化编写 本文主要是从简单的流程上去讲解咋使用的 PS 开发者本尊的官网教程写的是真的烂 一点也不友好 里面各种坑 本文基于h
  • Java基础——封装、继承、多态

    今天我们来了解一下面向对象的三大特性 封装 继承和多态 封装 把属性和实现细节隐藏起来 不让外界直接访问 提供公共的方法访问方式 private A 只能修饰成员 B 被private修饰的成员只能在本类中访问 外界不可以直接访问 C pr
  • cocos2d-x 地图随英雄移动

    本人刚开始学习cocos2d x游戏引擎 学到瓦片地图这块 网上有一个很经典的例子 见链接 基于Cocos2D X的砖块地图教程 一 在看到其中的地图跟随角色移动 一般情况下保持角色在屏幕中央附近 到地图边缘时移动角色 的问题时看的不大明白