>我有一个放在屏幕中间的物体
>当点击屏幕的左侧时,我希望对象以拱形方式向左弯曲.如果您想象对象位于钟面上的12处,向左按将使其动画到9点钟.
>当向右敲击时,我希望物体移动到3点钟.
>但是,如果对象已经拱起到9到12(10或11)之间的位置,并且我向右按,它将需要在路径上移动.
>总之,我想要一条跨越9到3点的路径.当用户向左或向右轻击时,对象将沿着路径移动,直到用户放开按钮(屏幕的左侧或右侧)
如果我能提供任何其他信息以帮助更清楚,请告诉我.
一如既往,非常感谢任何回应:)
解决方法 好的,所以有一个很酷的小SKAction(我确定你熟悉那个类),它允许SKSpriteNode遵循一个路径:SKAction *move = [SKAction followPath:/*aPath*/ duration:1];[myNode runAction:action];// There's also a followPath:withSpeed: method which may be more suitable for you
您只需要路径本身就可以使用UIBezIErPath. UIBezIErPath是objective-c类,允许您定义路径,然后可以在drawRect:方法的视图上绘制.它们也可以转换为CGPathrefs,然后可以跟随一个节点.
所有弧都是圆的一部分,并且有一种UIBezIErPath设计用于定义弧的方法:arcWithCenter:radius:startAngle:endAngle:顺时针:.
所以…让我们假设你的节点位于200,200的矩形点100,200处(即在x的中心,但在y的顶部).您希望此节点遵循弧到它指向0,100的位置:
基本上你在这里做的是将节点移动四分之一圆,如下所示:
在这种情况下,圆的半径为100,在3点钟位置发现0度.另外值得注意的是,对于UIBezIErPath,角度以弧度而非度数来度量.要将度数转换为弧度,可以使用以下简单公式:float radian = degree * M_PI / 180.0f;其中M_PI是pi.
因此,要创建从点100,200到0,100的路径并将其应用于SKAction,您可以执行以下 *** 作:
UIBezIErPath *path = [UIBezIErPath pathWithArcCenter:CGPointMake(100,100),radius:100 startAngle:90.0f * M_PI / 180.0f endAngle:180.0f * M_PI / 180.0f c@R_502_4414@:NO];SKAction *moveInArc = [SKAction followPath:path.CGPath duration:1];
在移动到弧形中的不同位置方面,您可以将SKAction与NSDictionary之类的关联关联,然后在它们完成之前删除它们以终止 *** 作.
对于轻敲时的电弧放电,您需要覆盖touchesBegan:withEvent:.
希望这能让你开始走上正确的道路. (双关打算…)
编辑:
好的,所以上面的代码定义了一个像圆形切片一样绘制圆形切片的路径,但是,你可以使用UIBezIErPath方法
- (voID)addCurvetoPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2
要么
- (voID)addQuadCurvetoPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint
后者可能是最适合你的. Here is a link to the docs.
您的代码看起来像这样:
UIBezIErPath *path = [UIBezIErPath bezIErPath];[path movetoPoint:node.positon];[path addQuadCurvetoPoint:destination controlPoint:control];SKAction *move = [SKAction followPath:path.CGPath duration:1];[node runAction:move];
要计算控制点,您可以进行实验直到获得所需的效果(可能是一个直角三角形,其中从节点到目的地的线是斜边,控制点是直角的点),或者here是二次曲线的简要说明.
总结以上是内存溢出为你收集整理的ios – SpriteKit – 在半圆拱中移动物体全部内容,希望文章能够帮你解决ios – SpriteKit – 在半圆拱中移动物体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)