gpt4 book ai didi

iphone - CCSprite 遵循一系列 CGPoints

转载 作者:行者123 更新时间:2023-12-03 20:29:32 29 4
gpt4 key购买 nike

我正在使用Cocos2D开发一个画线游戏,类似于Flight Control、Harbor Master以及应用商店中的其他游戏。

对于这个游戏,我需要一个 CCSprite 来跟随用户绘制的线。我正在存储 CGPoint 的序列NSArray 中的结构,基于我在 touchesBegin 中得到的点和touchesMoved消息。我现在遇到的问题是如何让我的 Sprite 跟随它们。

我有一个刻度方法,以帧速率速度调用。在该tick方法中,根据 Sprite 的速度和当前位置,我需要计算它的下一个位置。有没有标准方法可以实现这一目标?

我当前的方法是计算最后一个“引用点”和下一个“引用点”之间的线,并计算该线中的下一个点。我遇到的问题是当 Sprite “转动”时(从线的一段移动到另一段)。

任何提示将不胜感激。

最佳答案

为什么要编写自己的tick方法?为什么不直接使用内置的 CCMoveTo 方法?

(void) gotoNextWayPoint {
// You would need to code these functions:
CGPoint point1 = [self popCurrentWayPoint];
CGPoint point2 = [self getCurrentWayPoint];

// Calculate distance from last way point to next way point
CGFloat dx = point2.x - point1.x;
CGFloat dy = point2.y - point1.y;
float distance = sqrt( dx*dx + dy*dy );

// Calculate angle of segment
float angle = atan2(dy, dx);

// Rotate sprite to angle of next segment
// You could also do this as part of the sequence (or CCSpawn actually) below
// gradually as it approaches the next way point, but you would need the
// angle of the line between the next and next next way point
[mySprite setRotation: angle];

CCTime segmentDuration = distance/speed;

// Animate this segment, and afterward, call this function again
CCAction *myAction = [CCSequence actions:
[CCMoveTo actionWithDuration: segmentDuration position: nextWayPoint],
[CCCallFunc actionWithTarget: self selector: @selector(gotoNextWayPoint)],
nil];

[mySprite runAction: myAction];
}

关于iphone - CCSprite 遵循一系列 CGPoints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603756/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com