【问题标题】:How to make arrow in specific direction using cocos2d?如何使用 cocos2d 制作特定方向的箭头?
【发布时间】:2011-12-26 18:08:28
【问题描述】:

我想要在一行中放置两个对象,如下所示,并让一个对象从下方拍摄它们,如下所示

                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

我该如何实现这个逻辑,我应该有多个数组图像并根据角度使用它们,还是什么,但我想要它的准确性。

谢谢

【问题讨论】:

  • @nikhildhamsaniya,我应该在cocos2d项目中使用这些触摸方法和手势,你是说这个吗?
  • 显然你可以在那里你可以使用触摸移动方法以及触摸手势方法也可以找到手势链接raywenderlich.com/2343/…
  • 对于触摸移动从cocos2d-iphone.org/wiki/doku.php/…找到所有方法教程

标签: iphone cocos2d-iphone direction


【解决方案1】:

不需要多个图像....只需在 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]];

【讨论】:

  • 能否提供一些touchMove主体的代码,而不仅仅是想法,
  • Anush 我会试试这个,如果它奏效了,我会支持你:-)
  • 感谢您的宝贵时间 :-)
【解决方案2】:

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

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

rotate image

【讨论】:

  • 我看到了,但是你能看到只有箭头方向被移动,而不是图像,让我给你这个bubbleshooter.net的演示示例
  • 查看此链接,并查看移动或箭头,
  • 箭头动画需要在tick方法中混合箭头移动逻辑
  • 感谢您的宝贵时间,我应该实施而不是投票还是现在:-P
  • 什么时候得到你想要的结果,如果你觉得答案对别人也有用,这取决于你
【解决方案3】:

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

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

最好的,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2021-02-01
    相关资源
    最近更新 更多