我想在一行中有两个对象,如下图所示,并且有一个物体向下射击,如下所示
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
我如何实现这个逻辑,我应该有多个数组图像并根据角度使用它们,或者是什么,但我希望它具有准确性。
由于
答案 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)
答案 2 :(得分:0)
正如Anshul和Nikhil所说,旋转箭头应该足以解决你的问题。
另外请注意,您可能需要创建一个箭头精灵,其底部中心设置一个锚点(0.5,0.5),以避免注意到您的箭头左右移动,具体取决于您的设置。
最佳,