我创建了两条固定在精灵上的线,相距30˚.我希望两条线像摆锤一样左右摆动,总是从一端到另一端摆动(这样它们在它们的初始位置的左右摆动45°).请看下面我想要实现的目标:
以下是我能够实现的代码:
extension Int {
var degreesToRadians: Double { return Double(self) * .pi / 180 }
}
extension FloatingPoint {
var degreesToRadians: Self { return self * .pi / 180 }
var radiansToDegrees: Self { return self * 180 / .pi }
}
class GameScene: SKScene, SKPhysicsContactDelegate {
var anchorSprite = SKSpriteNode(imageNamed: "swingPin")
var armLeft = SKSpriteNode(imageNamed: "swingArm")
var armRight = SKSpriteNode(imageNamed: "swingArm")
override func didMove(to view: SKView) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: -1.8)
self.physicsWorld.contactDelegate = self
var tealBg …Run Code Online (Sandbox Code Playgroud) 我在不同的设备上测试我的应用程序,并意识到精灵运动非常不一致(在某些设备上运行速度比其他设备快得多).我发现这篇文章并按照说明从我所有的SKScenes中删除了大小参数然后我得到了错误:
fatal error: use of unimplemented initializer 'init(size:)' for class 'SuperGame.PosterScene'
Run Code Online (Sandbox Code Playgroud)
请参阅PosterScene下面的GameViewController课程以及调用它的课程.
PosterScene
class PosterScene: SKScene {
override init(){
super.init()
let posterImage = SKSpriteNode(imageNamed: "poster")
posterImage.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
self.addChild(posterImage)
let sequence = SKAction.sequence([ SKAction.wait(forDuration: 3.0), SKAction.run({ self.changeToMainMenuScene() }) ])
self.run(sequence)
}
func changeToMainMenuScene () {
let mainMenuScene = MainMenuScene()
self.view!.presentScene(mainMenuScene)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Run Code Online (Sandbox Code Playgroud)
GameViewController:
class GameViewController: UIViewController {
override …Run Code Online (Sandbox Code Playgroud) 我创建了一个40x40的正方形,如上所示.我有一个4x40的条带,我想用来动画(增加)我的方块的宽度,直到它在一秒钟内占据整个屏幕的宽度,无论方块的位置如何.非常类似于双方加载进度条的情况.
UPDATE
我忘了提到方形是一个物理体,因此物理体也必须随着精灵的增加而增加.
我正在创建一个游戏,并希望使用iPad大小设置(格局:1024x768).据我所知,使用iPad设置只会在iPhone上裁剪出部分高度.假设iPad(1024x768)有2048x1536背景图像,iPhone 6+(736x414)有2208x1242图像,
一世.如何从iPad上确定出现在iPad 6+上的"安全区域"?
II.iPhone 6+的"安全区域"是否与带有1334x750图像的iPhone 6(667x375)相同?如果没有,那么如何同时确定点和像素呢?
我一直在使用 SKTexture 按以下方式更改 didBeginContact 中的 SKSpriteNode 颜色和大小。
if firstBody.categoryBitMask == spriteCategory && secondBody.categoryBitMask == enemyCategory {
var newSprite = firstBody.node
let newImage = SKTexture(imageNamed: "newSprite.png")
(newSprite as? SKSpriteNode)?.size = newImage.size() //magic
oldToNewSpriteAction = SKAction.setTexture(newImage)
newSprite!.runAction(oldToNewSpriteAction)
}
Run Code Online (Sandbox Code Playgroud)
现在我正在创建一个没有 SKTextures 的示例代码,按以下方式设置我的 SKSpriteNodes:
oldSprite = SKSpriteNode(color: SKColor.blueColor(), size: oldSpriteSize)
newSprite = SKSpriteNode(color: SKColor.BrownColor(), size: newSpriteSize)
Run Code Online (Sandbox Code Playgroud)
如何在没有 SKTextures 的情况下更改 didBeginContact 中的精灵颜色和大小?
我已经ReplayKit在我的SpriteKit游戏中实现了,但由于一切都GameViewController在记录按钮内完成,显得过早.请看GameViewController下面我的课程:
class GameViewController: UIViewController, RPPreviewViewControllerDelegate {
var videoRecButton: UIButton!
var videoRecImage: UIImage!
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as? SKView
if skView?.scene == nil {
skView?.showsFPS = true
skView?.showsNodeCount = true
skView?.showsPhysics = true
skView?.ignoresSiblingOrder = false
//starting the game with the Poster Scene
let posterScene = PosterScene(size: skView!.bounds.size)
posterScene.scaleMode = .aspectFill
skView?.presentScene(posterScene)
}
videoRecButton = UIButton(type: .custom)
videoRecImage = UIImage(named:"videoRecButton.png")
videoRecButton.frame = CGRect(x:0, y: 0, width: (videoRecImage?.size.width)!, height: …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建两条锚定在某个点(精灵)并旋转以在它们之间形成30度角的线.下面是我想要实现的图像.
这是我到目前为止所做的:
extension Int {
var degreesToRadians: Double { return Double(self) * .pi / 180 }
}
extension FloatingPoint {
var degreesToRadians: Self { return self * .pi / 180 }
var radiansToDegrees: Self { return self * 180 / .pi }
}
class GameScene: SKScene, SKPhysicsContactDelegate {
var anchorSprite = SKSpriteNode(imageNamed: "anchorSprite")
var armLeft = SKSpriteNode(imageNamed: "lineSprite")
var armRight = SKSpriteNode(imageNamed: "lineSprite")
override func didMove(to view: SKView) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: -1.8)
self.physicsWorld.contactDelegate = self
var tealBg …Run Code Online (Sandbox Code Playgroud) sprite-kit ×7
swift ×6
ios ×3
swift3 ×3
swift2 ×2
ipad ×1
iphone ×1
metatrader4 ×1
mql4 ×1
replaykit ×1
skspritenode ×1