ios – 随机路径上SKSpriteNode的平滑运动

ios – 随机路径上SKSpriteNode的平滑运动,第1张

概述我正在制作一个小型的SpriteKit游戏.我想让这个游戏中的“敌人”在玩家周围的随机路径上移动(这是静态的). 如果我只是在屏幕上选择一个随机点并将动画设置到那里然后重复(例如:每2秒),这将给动作带来非常锯齿状的感觉. 如何使这个随机运动非常平滑(例如:如果敌人决定转身它将在平滑的U转弯路径上而不是锯齿状的锐角). PS:敌人必须避免玩家和对方. 您可以使用节点应遵循的CGPathRef创建S 我正在制作一个小型的SpriteKit游戏.我想让这个游戏中的“敌人”在玩家周围的随机路径上移动(这是静态的).

如果我只是在屏幕上选择一个随机点并将动画设置到那里然后重复(例如:每2秒),这将给动作带来非常锯齿状的感觉.

如何使这个随机运动非常平滑(例如:如果敌人决定转身它将在平滑的U转弯路径上而不是锯齿状的锐角).

PS:敌人必须避免玩家和对方.

解决方法 您可以使用节点应遵循的CGPathref创建SKAction.

以下是如何使节点创建圆圈的示例:

SKSpriteNode *myNode = ...CGPathref circlePath = CGPathCreateWithEllipseInRect(CGRectMake(0,400,400),NulL);SKAction *followTrack = [SKAction followPath:circle                                     asOffset:NO                                 orIEnttopath:YES                                     duration:1.0];SKAction *forever = [SKAction repeatActionForever:followTrack];[myNode runAction:forever];

您还可以创建随机UIBezierPath以定义更复杂的路径并使对象跟随它们.

例如:

UIBezIErPath *randomPath = [UIBezIErPath bezIErPath];[randomPath movetoPoint:RandomPoint(bounds)];[randomPath addCurvetoPoint:RandomPoint(YourBounds)              controlPoint1:RandomPoint(YourBounds)              controlPoint2:RandomPoint(YourBounds)];CGPoint RandomPoint(CGRect bounds){    return CGPointMake(CGRectGetMinX(bounds) + arc4random() % (int)CGRectGetWIDth(bounds),CGRectGetMinY(bounds) + arc4random() % (int)CGRectGetHeight(bounds));}

您使用SKAction使节点遵循路径,并且当 *** 作完成时(节点位于路径的末尾),您计算新路径.

这应该指向正确的方向.

总结

以上是内存溢出为你收集整理的ios – 随机路径上SKSpriteNode的平滑运动全部内容,希望文章能够帮你解决ios – 随机路径上SKSpriteNode的平滑运动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存