问题标签 [cclayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1601 浏览

ios - 触摸位置CCLayer

*现在工作代码*

好的,我认为这很容易开始工作,但结果却不像我预期的那样工作。

我正在尝试从可以移动或缩放的 CCLayer 获取触摸位置,而不是屏幕本身的位置?这就是我认为它会工作但它崩溃的方式?

接口 #import "cocos2d.h"

执行

如果我将此行更改为包含“self”:

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0swallowsTouches:YES];

它显然会起作用,但随后我得到了与屏幕相关的位置,而不是与图层相关的位置,这正是我所需要的。

0 投票
3 回答
1030 浏览

math - 无限/重复世界的数学/计算与旋转

我如何制作一个处理旋转的无限/重复世界,就像在这个游戏中一样:

http://bloodfromastone.co.uk/retaliation.html

我通过具有这样的层次结构对我的旋转移动世界进行了编码:

场景
  - mainLayer (CCLayer)
     - rotationLayer(CCNode)
        - positionLayer(CCNode)

rotationLayer 和 positionLayer 具有相同的大小(现在为 4000x4000 像素)。

我通过旋转rotationLayer来旋转整个世界,我通过移动positionLayer来移动整个世界,让玩家始终保持在设备屏幕的中心,并且是移动和旋转的世界。

现在我想这样做,如果玩家到达世界的边界(世界被移动以便世界边界与设备屏幕边界接触),那么世界被“包裹”到相反的边界所以世界是无限的。如果世界没有旋转,那将很容易,但现在我不知道如何做到这一点。我是一个数学和数学思维的傻瓜,所以我需要一些帮助。

现在我认为我不需要任何与 cocos2d-iphone 相关的帮助。我需要的是某种方法来计算我的玩家是否在世界范围之外,然后某种方法来计算我必须为世界提供什么新位置来包裹世界。

我想我必须计算一个圆的半径,这将是我在方形世界中的铸造厂,无论方形世界处于什么角度,都将确保可见矩形(屏幕)始终在世界广场。然后我需要一种方法来计算可见矩形边界是否在边界圆之外,如果是这样,我需要一种方法来计算边界圆中新的相对位置以将世界移动到。所以为了说明,我添加了 5 张图片。

在旋转的方形世界内的边界圆内的可见矩形:
旋转方形世界内的边界圆内的可见矩形

可见矩形顶部在旋转的方形世界中击中边界圆:
在此处输入图像描述

旋转的方形世界移动到相反的垂直位置,因此可见矩形的底部现在在旋转的世界内达到边界圆:
在此处输入图像描述

另一个可见矩形顶部的示例在旋转的方形世界中击中边界圆,以说明不同的场景:
在此处输入图像描述

再次旋转的方形世界移动到相反的垂直位置,以便可见矩形的底部现在在旋转的世界内达到边界圆:
再次旋转的方形世界移动到相反的垂直位置,以便可见矩形的底部现在在旋转的世界内达到边界圆

在非旋转的情况下移动 positionLayer 是我计算出来的数学,正如我所说,只要世界不旋转,我就可以计算出这个,但它确实如此。被移动/定位的世界/CCNode (positionLayer) 在被旋转的世界/CCNode (rotationLayer) 内。旋转的rotationLayer 的锚点始终位于屏幕的中心,但由于移动的positionLayer 在旋转的rotationLayer 内,它会围绕rotationLayer 的锚点旋转。然后我迷路了......当我将 positionLayer 向下移动到足以使其顶部边框到达屏幕顶部时,我需要按照 JohnPS 描述的方式包装该 positionLayer,但不是那么简单,我需要将它包装在基于矢量的关于rotationLayer CCNode 的旋转。这个我不知道怎么办。


谢谢索伦_

0 投票
1 回答
356 浏览

ios - 我的 CCScene 行为异常?

在我的应用程序中,我注意到在我的 CCScene 中可能有些事情看起来不正确。

我只解释 3 件事: 1. 即使我从 UIViewController 执行此操作,我的 FPS 也不会显示在视图中的任何位置(我的 CCLayer 是它自己的类)

我的 CCLayer 类的 .h 如下所示:

我看到了我的一个 CCSprite,但仅此而已,我没有看到其他任何东西。

然后在我的 CCLayer 类中,我这样做是为了完全激活 CCScene:

为什么是这样?

  1. 我的游戏循环没有被调用。我正在这样做:

    [自我计划:@selector(myGameLoop:)];

然后在我的游戏循环中我 NSLog 它并且日志永远不会显示在控制台中,所以我意识到它没有被调用。

另一件奇怪的事情是,即使我这样做,我的 UIAccelerometer 委托方法也没有被调用:

有什么理由吗?

  1. 最后,只有我的一个 CCSprite 正在显示。我有一些我添加的 CCSprite,[self addChild:mySprite];但我没有看到它们。它们都附在 b2Bodys 上,有些正在制作动画,但我只看到一个 CCSprite,我不知道为什么我看到的只有一个。

有谁知道为什么会发生这些事情?

编辑1:

#1:固定!

#2: 我正在这样做,但它仍然无法正常工作!我这样做是为了安排它:

这是我的方法:

NSLog 没有被调用。当您向我展示第二种方式时,它不会像游戏循环通常那样得到更新,只会使该方法被调用一次。为什么没有调用该方法?

另外奇怪的是我的 UIAccelerometer 委托方法仍然没有被调用!我现在正在这样做:

而且我 NSLogged 我的 UIAccelerometer 委托方法,它似乎仍然没有被调用:

Edit2:现在看来,如果我这样做,我的 UIAccelerometer 方法就会被调用:

为什么会这样?我想我在某处读到我的层没有添加到我的层次结构中,这是真的吗?我从这里得到了这个想法,也许这就是所有这些问题发生的原因:http: //www.cocos2d-iphone.org/forum/topic/13988

#3:我的 CCSprite 没有遵循 b2Body,而是相反。你在这里给了我那个代码:b2Body Animation?

我正在像 UIKit 方式一样设置 CCSprite 的位置,也许这​​就是原因。这是未显示的精灵之一的示例:

0 投票
1 回答
2978 浏览

objective-c - cocos2d中层之间如何过渡?

我有一个像这样的菜单场景层次结构:

我想在不移动背景层的情况下从主菜单过渡到设置菜单。有很多关于如何在场景之间转换的文档,但是我在层之间找不到任何东西。主菜单和设置菜单层都是全屏透明背景,我只想在它们之间滑动而不移动背景。

简单的问题,但在网上搜索了一个多小时后,我完全被难住了。

0 投票
1 回答
603 浏览

objective-c - 使用 CCParallaxNode 捏合缩放

如何实现捏缩放到 a parallax scrolling node

0 投票
2 回答
835 浏览

cocos2d-iphone - Cocos2d iPhone。滚动层内容大小。图层

我想设置滚动条的内容大小。

我有一个滚动层,它是 CCLayer 类型,移动由 ccTouchMove 设置。我有一个平滑的时间表。但。

问题是滚动层像整个显示器一样大。我想设置滚动条的内容大小。此图层中的内容将滚动并仅在此图层中显示。不占用整个显示器。像这样的东西

在此处输入图像描述

仅在灰色 CCLayer (scrolllayer) 中滚动 ....不是整个屏幕。

你能帮助我吗?

PS:设置 CCLayerColor 和 initWithColor:Width:Height: 不起作用。它只是制作了一些愚蠢的彩盒,而且它也在移动。

0 投票
1 回答
1094 浏览

cocos2d-iphone - 如何在 CCSprite 上叠加 CCSprite?

在我的游戏中,我有一系列头像,目前每个头像都有一个小的矩形容器,表示这个图片是一个按钮,可以点击。

但是,我意识到我需要更改容器的颜色来表示视觉效果(例如按钮单击)。

例如:

关闭状态 = 灰色容器。开启状态 = 红色容器

与其在关闭/开启状态下重复每个化身,我想将容器和化身分开,有点像这张粗略的绘图;

因此,我们将关闭容器、开启容器和化身分开。

然后,在我的游戏中,我希望能够使用我想要使用的图层重新构建精灵,此外我希望新构建的精灵像一个单一的 CCSprite 一样,所以我可以正确定位它,或者做其他事情与精灵。

有点像从相互叠加的各种 CCSprite 中创建 CCSprite。

因此,如何将多个 sprite 叠加在一起,然后使用分层的 CCSprite 创建一个 CCSprite?

谢谢。

/编辑:添加了一些代码。

我使用 CCLayer 创建了一些代码,然后将我的精灵添加为图层的一部分。

这似乎制作了一个里面有两个精灵的图层。这似乎是对的,但我不确定这是否正确,因为我不确定是否可以使其可点击或处理其他事件。

另外,我想为颜色添加一个图层。

在 Z 顺序中:

1) -2 空.png

2)-1个颜色层

3) 0个头像

0 投票
2 回答
1488 浏览

ios - (Cocos2D) 检测显示的是哪个CCScene?

是否可以检测到当前在场景中显示的是哪个 CCScene?我的游戏中有 2 个 CCScene,如果其中一个正在显示,我希望执行某个操作。

还有一个快速相关的问题,如果我想检查 CCMenu 目前是否没有显示,我会做类似的事情

说到Cocos2D,我有点菜鸟,所以请原谅我:)

谢谢!

0 投票
1 回答
285 浏览

cocos2d-iphone - CGPath 在 CCLayer 上不可见

我正在使用 Cocos2d。我正在尝试使用 CGPath 制作“轨迹”。CGPath 在屏幕上,我已经对其进行了 NSLogged。“轨迹”或 CGPath 不可见。

“轨迹”需要动态生成。

我有一些不同的错误,如下所示:

你能帮忙的话,我会很高兴

0 投票
1 回答
107 浏览

objective-c - 在 .h 文件中定义一个 cclayer

在我的中,我定义了一个这样的 CCLayer:

我应该如何声明它以在 +(CCScene *) 场景中使用它?

像这样 ?