ios - 使用 SKActions SKSpritenode 进行角运动
问题描述
我在屏幕上左右随机生成了 SKSpriteNodes。他们应该只是通过屏幕运行,然后节点被删除。他们做我想做的,但我只是直线运动,我想让他们以一个角度移动(后来随机创建)
这就是我所拥有的
// 这些行只是为了创建 SpriteNode 并将其放置在屏幕之外
let randomObj = SKSpriteNode(imageNamed: "randomObj")
let leftOrRight:CGFloat = arc4random_uniform(2) == 0 ? 1 : -1
randomObj.position = CGPoint(x: CGFloat(leftOrRight)*(self.frame.width
+ randomObj.frame.width), y: random(min:0 , max: self.frame.height))
self.addChild(randomObj)
// 这里是移动 -> 走过屏幕并删除
let distance = CGFloat(self.frame.width*2)
let moveRandomObj = SKAction.moveBy(x: (-leftOrRight)*distance + 100,
y: 0, duration: TimeInterval(0.008 * distance))
let removeRandomObj = SKAction.removeFromParent()
let moveAndRemove = SKAction.sequence([moveRandomObj, removeRandomObj])
randomObj.run(moveAndRemove)
我试图用 SKAction 旋转来给它一个旋转,但是只有精灵被旋转了,它仍然水平移动
感谢任何帮助
解决方案
您只需向 的y:
值添加一个随机元素:
let moveRandomObj = SKAction.moveBy(x: (-leftOrRight)*distance + 100,
y: 0, duration: TimeInterval(0.008 * distance))
这是 aMoveBy
并且你已经告诉它垂直移动 0 点,所以它自然会直接移动。节点的旋转与它移动的方向无关。
推荐阅读
- android - 怎么处理
和类似于 Youtube 的 MotionLayout 中的 onClickListener - html - Vuetify:根据(错误)消息的可见性调整输入字段的底部边距
- php - 如何打印解析为 php 对象的 json 字符串
- ios - 在 iOS RxSwift 中用适当的值区分 errorObserver
- openshift - 如何回滚以使用旧图像而不是保持最新(外部构建)?
- csv - 重复的标题名称 Apache Commons-csv(withAllowDuplicateHeaderNames 不起作用)
- xamarin - 从 C# 为 LinearLayout 设置 android:layout_weight
- reactjs - 包含 ReactJS 应用程序的 Docker 容器在本地运行,但在 Web 服务器上失败
- google-apps-script - 在 Column1 的值是动态的对象中获取列名及其值
- python - 如何从列中返回列表的所有子集?