問題タブ [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

*今すぐコードを動作させる*

OK、これは簡単に機能すると思いましたが、期待どおりに機能しないことがわかりました。

画面自体の場所ではなく、移動またはズームできるCCLayerからタッチの場所を取得しようとしていますか?これが私がそれがうまくいくと思った方法ですが、それはクラッシュしますか?

インターフェイス#import"cocos2d.h"

実装

この行を「self」を含むように変更すると、次のようになります。

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches: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をラップする必要がありますが、それほど単純ではありません。ベクターベースでラップする必要があります。 rotationLayerCCNodeの回転について。これはどうしたらいいかわかりません。

ありがとう
Søren

0 投票する
1 に答える
356 参照

ios - CCScene の動作がおかしくなっていますか?

私のアプリケーションでは、私の CCScene で正しくないように見えるものがたくさんあることに気付きました。

3つのことを説明します:1.UIViewControllerからこれを行っても、FPSはビューのどこにも表示されません(私のCCLayerは独自のクラスです)

私の CCLayer クラスの .h は次のようになります。

私の CCSprite が 1 つ表示されますが、それだけです。他には何も表示されません。

次に、CCLayer クラスでこれを実行して、CCScene を完全にアクティブにします。

どうしてこれなの?

  1. ゲーム ループが呼び出されません。私はこれをやっています:

    [セルフスケジュール:@selector(myGameLoop:)];

次に、ゲームループで NSLog を実行しましたが、ログがコンソールに表示されないため、呼び出されていないことに気付きました。

また、奇妙なことは、これを行っても UIAccelerometer デリゲート メソッドが呼び出されないことです。

理由はありますか?

  1. そして最後に、私の CCSprites の 1 つだけが表示されています。私はいくつかのCCSpritesを追加[self addChild:mySprite];していますが、それらは表示されません。それらはすべて b2Bodys にアタッチされており、アニメーション化されているものもありますが、CCSprite が 1 つしか表示されず、なぜそれが唯一のものなのかわかりません。

なぜこれらのことが起こっているのか、誰にも考えがありますか?

編集1:

#1:修正!

#2: 私はそれをやっていますが、まだ機能していません!私はそれをスケジュールするためにこれを行います:

これは私の方法です:

その NSLog が呼び出されていません。そして、あなたが私に 2 番目の方法を示したとき、それは通常のゲーム ループのように更新されず、メソッドが 1 回だけ呼び出されます。そのメソッドが呼び出されないのはなぜですか?

また、奇妙なことに、私の UIAccelerometer デリゲート メソッドがまだ呼び出されていません。私は今これをやっています:

そして、UIAccelerometer デリゲート メソッドを NSLogged しましたが、まだ呼び出されているようには見えません。

Edit2:次の場合、UIAccelerometer メソッドが呼び出されるようになりました。

これはなぜでしょうか?レイヤーが階層に追加されていないことをどこかで読んだと思いますが、本当ですか? 私はここからそのアイデアを得ました。おそらく、これらすべての問題が発生している理由です: http://www.cocos2d-iphone.org/forum/topic/13988

#3:私の CCSprite は b2Body に従っていません。代わりに、その逆です。あなたは私にそのコードを教えてくれました: b2Body Animation?

UIKit の方法のように CCSprites の位置を設定しています。おそらくそれが理由です。以下は、表示されないスプライトの 1 つの例です。

0 投票する
1 に答える
2978 参照

objective-c - cocos2dのレイヤー間をどのように移行しますか?

私は次のようなメニューシーン階層を持っています:

背景レイヤーを移動せずに、メインメニューから設定メニューに移行したい。シーン間を移行する方法についてはたくさんのドキュメントがありますが、レイヤー間で見つけることはできません。メインメニューレイヤーと設定メニューレイヤーはどちらも背景が透明なフルスクリーンです。背景を移動せずに、それらの間をスライドさせたいだけです。

単純な問題ですが、1時間以上ウェブを検索した後、私は完全に困惑しています。

0 投票する
1 に答える
603 参照

objective-c - CCParallaxNode でピンチしてズーム

ピンチを実装してズームするにはどうすればよいparallax scrolling nodeですか?

0 投票する
2 に答える
835 参照

cocos2d-iphone - Cocos2d アイフォン。Scrolllayer contentSize。レイヤー

scrolllayerのcontentsizeを設定したいです。

それはCCLayerタイプで、移動はccTouchMoveによって設定されます。スムージングのスケジュールは 1 つです。しかし。

問題は、スクロールレイヤーがディスプレイ全体のように大きいことです。scrolllayerのcontentsizeを設定したいです。このレイヤーのコンテンツはスクロールされ、このレイヤーでのみ表示されます。ディスプレイ全体を占有しません。このようなもの

ここに画像の説明を入力

灰色の CCLayer (scrolllayer) だけでスクロール ....画面全体ではありません。

手伝って頂けますか?

PS: CCLayerColor と initWithColor:Width:Height: の設定が機能していません。ばかげたカラーボックスを作るだけで、それも動いています。

0 投票する
1 に答える
1094 参照

cocos2d-iphone - CCSpriteの上にCCSpriteを重ねる方法は?

私のゲームでは、一連のアバターがあります。現在、各アバターには、この画像がボタンであり、クリックできることを示す小さな長方形のコンテナーがあります。

ただし、視覚効果(ボタンのクリックなど)を示すために、コンテナーの色を変更する必要があることに気付きました。

例えば:

オフ状態=灰色のコンテナ。状態=赤いコンテナ

オフ/オンの状態で各アバターを繰り返すのではなく、この大まかな図のように、コンテナとアバターを分離したいと思います。

したがって、オフコンテナ、オンコンテナ、およびアバターを分離します。

次に、私のゲームでは、使用したいレイヤーでスプライトを再構築できるようにしたいです。さらに、新しく構築したスプライトを単一のCCSpriteのように機能させて、適切に配置したり、その他のことを実行したりします。スプライトで。

さまざまなCCSpriteを重ねて作成するようなものです。

したがって、複数のスプライトを重ねて、階層化されたCCSpriteを使用してCCSpriteを作成するにはどうすればよいですか?

ありがとう。

/編集:いくつかのコードを追加しました。

CCLayerを使用してコードを作成し、スプライトをレイヤーの一部として追加しました。

これにより、2つのスプライトが内部にあるレイヤーが作成されるようです。これは正しいようですが、クリック可能にしたり、他のイベントを処理したりできるかどうかわからないため、これが正しいかどうかはわかりません。

さらに、色のレイヤーを追加したいと思います。

Zオーダー:

1)-2 empty.png

2)-1色のレイヤー

3)0アバター

0 投票する
2 に答える
1488 参照

ios - (Cocos2D) どの CCScene が表示されているかを検出しますか?

シーンで現在どの CCScene が表示されているかを検出することは可能ですか? ゲームに 2 つの CCSscenes があり、1 つが表示されている場合に特定のアクションを実行したいと考えています。

また、関連する簡単な質問です。CCMenu が現在表示されていないかどうかを確認したい場合は、次のようにしますか

私は Cocos2D に関しては少し初心者なので、ご容赦ください :)

ありがとう!

0 投票する
1 に答える
285 参照

cocos2d-iphone - CCLayer で CGPath が見えない

Cocos2d を使用しています。CGPath を使用して「トレイル」を作成しようとしています。CGPath は画面上にあり、NSLogged を実行しました。「トレイル」または CGPath は表示されません。

「トレイル」は動的に生成する必要があります。

次のようないくつかの異なるエラーがあります。

どんな助けでもいいでしょう

0 投票する
1 に答える
107 参照

objective-c - .hファイルでcclayerを定義します

私の場合、次のようなCCLayerを定義しました。

+(CCScene *)シーンで使用するためにどのように宣言すればよいですか?

このような ?