前提・実現したいこと
Spritekitでブロックゲームを作っているのですが、makeBlock1
で作ったノードをtouchesMoved
で動かして、touchesEnded
で落としているのですが、2つ目のノードをmakeBlock1
で作り、動かすと、前に作成したノードも連動して動いてしまうのですが、この連動して動く動作を落ちた後のノードは連動して動かないようにしたいのですが、どなたかノードごとに動作を分離する方法を教えていただけないでしょうか?文章がわかりにくくて申し訳ございません。
swift
import UIKit import SpriteKit class GameScene: SKScene ,SKPhysicsContactDelegate{ var plateNode:SKNode! var blockNode1:SKNode! var block1Sprite:SKSpriteNode! var touchesPosition:CGPoint! //ブロックの重力作用用のフラグ var gravityFlag:Bool! //シーンが呼び出された時に呼ばれるメソッド override func didMove(to view: SKView) { backgroundColor = UIColor(red: 1, green: 1, blue: 0.67, alpha: 1) physicsWorld.gravity=CGVector(dx: 0, dy: -4.0) blockNode1=SKNode() addChild(blockNode1) plateNode=SKNode() addChild(plateNode) makePlate() } func makeBlock1(){ block1Sprite=SKSpriteNode(color: UIColor.green, size: CGSize(width: self.frame.size.width/7, height: self.frame.size.height/10)) //ノードの表示箇所 block1Sprite.position=CGPoint(x: self.frame.size.width/2, y: self.frame.size.height-self.frame.size.height/10) blockNode1.addChild(block1Sprite) } func makePlate(){ let plateSprite=SKSpriteNode(color: UIColor.blue, size: CGSize(width: self.frame.size.width/2, height: self.frame.size.height/13)) plateSprite.position=CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/10) plateSprite.physicsBody=SKPhysicsBody(rectangleOf: plateSprite.size) //衝突時に動かないようにする plateSprite.physicsBody?.isDynamic=false addChild(plateSprite) } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { makeBlock1() } override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { for touch in touches{ let newPosition = touch.location(in: self) let oldPosition = touch.previousLocation(in: self) let xTranslation = newPosition.x - oldPosition.x var blockPositionx=blockNode1.position.x blockPositionx += xTranslation blockNode1.run(SKAction.moveTo(x: blockPositionx, duration: 0.0)) } } override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { //物理演算の追加 block1Sprite.physicsBody=SKPhysicsBody(rectangleOf: block1Sprite.size) } }
補足情報(FW/ツールのバージョンなど)
swift4を使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。