1

次のチュートリアルの数学の一部を理解するのに問題があります。

スプライト キットのチュートリアル

オフセットを理解する方法がわかりません。チュートリアルの約半分で、Ray は次のコードを使用します。

UITouch * touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];

// 2 - Set up initial location of projectile
SKSpriteNode * projectile = [SKSpriteNode spriteNodeWithImageNamed:@"projectile"];
projectile.position = self.player.position;

// 3- Determine offset of location to projectile
CGPoint offset = rwSub(location, projectile.position);

rwSub はどこですか

static inline CGPoint rwSub(CGPoint a, CGPoint b) {
    return CGPointMake(a.x - b.x, a.y - b.y);
}

このコードが機能することは知っていますが、理解できません。タッチ ポイントとオフセット ポイントを NSLogging してみましたが、図のように三角形を形成しません。

画像
(ソース: raywenderlich.com )

これは私の出力から得たものです:

Touch Location
 X: 549.000000 Y: 154.000000
Offset
 X: 535.500000 Y: -6.000000

これは正しい方向にベクトルを形成しません..しかし、それでも機能しますか? オフセットの仕組みを説明できる人はいますか?

4

2 に答える 2

2

オフセットは忍者との違いで、触れた点です。つまり、記録したタッチは、右に 535 ポイント、下に 6 ポイント (-6) です。

したがって、プレーヤーに対して正しい方向に進んでいます。

チュートリアルでは、忍者スターを強制的に画面外に移動させます。

 // 6 - Get the direction of where to shoot
CGPoint direction = rwNormalize(offset);

// 7 - Make it shoot far enough to be guaranteed off screen
CGPoint shootAmount = rwMult(direction, 1000);

// 8 - Add the shoot amount to the current position       
CGPoint realDest = rwAdd(shootAmount, projectile.position);

いくつかの絵を描いてください、それはあなたが理解するのを助けるでしょう.

于 2013-10-03T12:45:44.957 に答える
1

この場合のオフセットは、キャラクターに関連するタッチの位置を表すだけで、発射物がどこに向けられるかを知ることができます。

チュートリアルでは、次の行で次のことがわかります。

// 4 - Bail out if you are shooting down or backwards
    if (offset.x <= 0) return;

この例offset.x < 0では、発射体が x 軸上の忍者の背後にある何かをターゲットにしていることを意味します。ここで、0 はキャラクターの x 座標です。

ここでの考え方は、発射体のターゲット座標をキャラクター自身の参照に変換して、互いの位置をよりよく理解することです。

于 2013-09-26T09:21:01.673 に答える