`
runfeel
  • 浏览: 936005 次
文章分类
社区版块
存档分类
最新评论

cocos2d anchor point 锚点解析

 
阅读更多

anchor point 究竟是怎么回事? 之所以造成不容易理解的是因为我们平时看待一个图片是 以图片的中心点 这一个维度来决定图片的位置的。而在cocos2d中决定一个 图片的位置是由两个维度 一个是 position 也就是图片的中心点 另外一个是anchor point。只要我们搞清楚他们的关系,自然就迎刃而解。

他们的关系是这样的:

actualPosition.x = position.x + width*(0.5 - anchor_point.x); acturalPosition.y = position.y + height*(0.5 - anchor_point.y)

actualPosition 是sprite实际上在屏幕显示的位置, poistion是 程序设置的, achor_point也是程序设置的。


具体看下面的例子一:

CCSprite *sprite = [CCSprite spritewithFile:@"blackSquare.png"];
sprite.position=ccp(0,0);
sprite.anchorPoint=ccp(0,0);
[self addChild:sprite];

具体效果如下:


根据上面的公式: 假设精灵的width = height = 10.

actualPosition.x = 0 + 10*(0.5 - 0) = 5; actualPosition.y = 0 + 10*(0.5 - 0) = 5;

(5, 5) 这个结果正是现在图片的在屏幕上的实际位置。


例子 二:

CCSprite *sprite = [CCSprite spritewithFile:@"blackSquare.png"];
sprite.position=ccp(0,0);
sprite.anchorPoint=ccp(-1,-1);
[self addChild:sprite];

具体效果如下:


根据上面的公式: 假设精灵的width = height = 10.

actualPosition.x = 0 + 10*(0.5 - (-1)) = 15; actualPosition.y = 0 + 10*(0.5 - (-1)) = 15;

(15, 15) 这个结果正是现在图片的在屏幕上的实际位置。


例子三

CCSprite *sprite = [CCSprite spritewithFile:@"blackSquare.png"];
sprite.anchorPoint=ccp(1,1);
sprite.position=ccp(sprite.contentSize.width , sprite.contentSize.height);
[self addChild:sprite];


根据上面的公式: 假设精灵的width = height = 10.

actualPosition.x = 10 + 10*(0.5 - (1)) = 5; actualPosition.y = 10 + 10*(0.5 - (1)) = 5;

(5, 5) 这个结果正是现在图片的在屏幕上的实际位置。






分享到:
评论

相关推荐

    cocos2d-x AnchorPoint

    《cocos2d-x AnchorPoint:游戏开发中的关键概念解析》 在cocos2d-x游戏引擎中,AnchorPoint是一个至关重要的概念,它直接影响到游戏中精灵(Sprite)和其他可渲染对象的位置、旋转和缩放行为。理解并熟练运用...

    cocos2d入门cocos2d入门

    `anchorPoint`是精灵的锚点,用于指定旋转和缩放的中心点。 6. **Menu与MenuItem**:菜单用于展示游戏的交互元素,如按钮。MenuItem是菜单项,可以关联图像和标签等元素。 7. **Action**:动作是cocos2d的核心功能之...

    cocos2d-x抽屉

    通过调整这些节点的锚点(Anchor Point)、位置(Position)和尺寸(Size),可以实现抽屉从屏幕边缘滑出的效果。同时,为了实现平滑的过渡,可能还会用到`EaseIn`、`EaseOut`或者`EaseExponentialInOut`等缓动函数...

    cocos2d-x自适应屏幕分辨率 源码

    此外,开发者还需要关注节点的锚点(Anchor Point)和大小(Size),确保它们在不同分辨率下能正确缩放。例如,使用相对大小而不是绝对大小,可以避免在不同屏幕尺寸上出现不一致的布局。 在`android`目录下,你...

    cocos2d-android

    - **锚点(Anchor Point)**:定义了精灵的中心点,用于旋转和缩放操作。默认情况下,锚点位于精灵的中心(0.5,0.5)。 - **坐标系统**:可以设置精灵的位置和大小。 - **镜像效果**:通过`setFlipX(true)`或`...

    Cocos2d-x血条跟随怪物运动----之游戏开发《赵云要格斗》

    然后,通过设置血条节点的锚点(Anchor Point)为(0, 1),使血条的顶部与怪物的底部对齐。当怪物移动时,血条会自动跟随。 4. 动态血量更新:每当怪物受到攻击,需要实时更新血条的宽度。这可以通过监听战斗事件并...

    锚点解析1

    标题“锚点解析1”和描述“锚点解析2014-3-7所谓锚点,就是你要指定你设置的那个点(这个点,一般是用setPosition函数设定的)是图片的那个点(是中点,左上角点还是其他点)”主要探讨了锚点的概念和作用。...

    iOS利用cocos2d制作精灵详解

    例如,`sprite.anchorPoint=ccp(0,0.5);`将锚点设置在精灵的左下角(x轴为0,y轴为0.5)。锚点的坐标范围在0到1之间,表示相对于精灵尺寸的比例位置。 精灵的位置可通过`position`属性设置,例如`sprite.position=...

    Cocos2D游戏之旅(四):卡牌翻转效果的实现(下)---源代码

    在游戏开始时,卡牌应该是正面朝上的,我们可以将卡牌的锚点(Anchor Point)设置为中心,这样翻转动作将围绕中心点进行。同时,可以通过设置`flipX`或`flipY`属性为`false`来确保卡牌初始状态为正面。 3. **实现...

    详解iOS游戏开发中Cocos2D的坐标位置关系

    5. 锚点:`anchorPoint`用于定义节点位置的参考点,通常用于实现对齐和旋转效果。 理解这些基本概念后,开发者就能更准确地控制游戏元素在屏幕上的布局和交互,从而创造出丰富的游戏体验。在实际开发中,还需要考虑...

    iOS DevCamp幻灯片分享:在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林

    - **锚点(Anchor Point)**:确定节点在其父节点中的相对位置。 - **尺寸(Size)**:节点的大小。 - **可见性(Visible)**:控制节点是否可见。 - **Z顺序(Z-Order)**:决定多个节点之间的显示顺序。 - **...

    Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验

    默认情况下,CCScene的坐标系统原点位于左下角,而其锚点(Anchor Point)是(0.5, 0.5),这意味着场景的中心点被视为坐标系的基准点。 接着,CCLayer是CCScene的子类,通常用于组织和管理游戏中的交互层或逻辑层。...

    计算机软件及应用iOS应用程序开发方法与实践PPT课件.pptx

    每个节点都有一个锚点属性(anchorPoint),定义了变换和定位时的参照点,锚点值是以比例形式表示的,不局限于节点内部。节点还可以定期更新,例如在每一帧或特定时间间隔调用回调方法,以实现动态效果或实时检测。 ...

    文字的拖拽和定位

    这时,我们可以设置文字的锚点(anchor point)和位置,使其准确地对齐到目标位置。 在《中国好学霸》和《疯狂猜成语》这类游戏中,文字的拖拽和定位是关键的游戏机制。玩家通过拖动文字到正确的位置来完成谜题,这...

    cocos2dx 3.3 tilemap 缩放滑动并且准确点击对象

    - 为了保持平滑的缩放效果,可以采用`ccScaleTo`动作或者`set锚点(point anchor)`配合`setScale()`来实现动画缩放。 3. **地图滑动** - 滑动通常通过改变摄像机的位置来实现。在Cocos2d-x中,我们可以使用`...

    摇杆函数及资源

    确保设置好它们的锚点(anchor point),通常是(0.5, 0.5)以保持居中。 3. 实现触摸事件监听器:Cocos2d-x提供了触摸事件处理机制,如`ccTouchBegan()`, `ccTouchMoved()`, 和`ccTouchEnded()`。在你的游戏层类中...

    【cocos creater】7.仿《弓箭传说》- 控制主角朝向敌人.rar

    - 设置Sprite的锚点(anchor point)为0.5, 0.5,使其旋转中心位于图像的中心点。 - 将主角放置在场景合适的位置,可以通过调整坐标(x, y)来完成。 2. **添加用户输入处理** - 创建一个脚本(script)并将其...

    Cocos2dx摇杆lua版

    你可以加载一个PNG或者SVG图像作为按钮的背景,然后设置其锚点(anchor point)以确保其在屏幕上的位置正确。例如: ```lua local joystickBtn = ccui.Button:create() joystickBtn:setScale9Enabled(true) ...

Global site tag (gtag.js) - Google Analytics