如何使用cocos2d在特定方向上制作箭头?

时间:2011-11-11 05:02:45

标签: iphone cocos2d-iphone direction

我想在一行中有两个对象,如下图所示,并且有一个物体向下射击,如下所示

                0 0 0 0 0 0 




                     0

下面总是在它的位置上,然后射到一个, 我想制作箭头,因为用户将手指移动到iPhone的屏幕上,如下所示

                 0 0 0 0 0 0 

                   \
                    \
                     \
                      0

如果移动手指那么

                  0 0 0 0 0 0                             
                      |
                      |
                      | 
                      0

在屏幕上向右移动一根手指时,箭头应分别移动

                  0 0 0 0 0 0                             
                          /
                         /
                        /
                      0

我如何实现这个逻辑,我应该有多个数组图像并根据角度使用它们,或者是什么,但我希望它具有准确性。

由于

3 个答案:

答案 0 :(得分:4)

不需要多个图像....只需在touchesMoved方法中旋转箭头图像

尝试该代码。

UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];


// Set up initial location of projectile
CGSize winSize = [[CCDirector sharedDirector] winSize];

// Rotate player to face shooting direction
CGPoint shootVector = ccpSub(location, sprite.position);
CGFloat shootAngle = ccpToAngle(shootVector);
CGFloat cocosAngle = CC_RADIANS_TO_DEGREES(-1 * shootAngle);

CGFloat curAngle = _player.rotation;
CGFloat rotateDiff = cocosAngle - curAngle;    
if (rotateDiff > 180)
    rotateDiff -= 360;
if (rotateDiff < -180)
    rotateDiff += 360;    

CGFloat rotateSpeed = 360; // degrees per second
CGFloat rotateDuration = fabs(rotateDiff / rotateSpeed);

[yoursprite runAction:[CCSequence actions:
                    [CCRotateTo actionWithDuration:rotateDuration angle:cocosAngle],
                    [CCCallFunc actionWithTarget:self selector:@selector(finishShoot)],
                    nil]];

答案 1 :(得分:1)

检查以下链接以在触摸移动时旋转图像

这里你必须限制你想要的角度之间的角度

rotate image

答案 2 :(得分:0)

正如Anshul和Nikhil所说,旋转箭头应该足以解决你的问题。

另外请注意,您可能需要创建一个箭头精灵,其底部中心设置一个锚点(0.5,0.5),以避免注意到您的箭头左右移动,具体取决于您的设置。

最佳,