別のクラスから呼び出したノードを移動させると、ノードが左上とタッチ位置を
交互にブレるのですが、なぜこうなるのか、原因がわかりません。
座標がズレている感じです。
ゲームシーンに全て書けばこの現象は起きないのですが、
対処法をご存知の方よろしくお願いします。、
GameScene.swift
import SpriteKit class GameScene: SKScene { override func didMove(to view: SKView) { let square = Square() square.setScene(scene: self) self.addChild(square) } }
Square.swift
import SpriteKit class Square: SKSpriteNode { var gameScene: SKScene! func setScene(scene: SKScene) { self.gameScene = scene } init() { super.init(texture: nil, color: UIColor.blue, size: CGSize(width:50,height: 50)) self.position = CGPoint(x:100, y:100) self.physicsBody?.affectedByGravity = false self.isUserInteractionEnabled = true } override func touchesMoved(_ touches: Set<UITouch>, with: UIEvent?){ let location = touches.first!.location(in: self) self.position = location //この行を追加して座標を確認しました。 print("Square",self.position,"location",location) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } }
座標のログの最初の数行です
四角ノードのポジションをx:100, y:100に設定しているので
ズレているようです。
log
1Square (-2.33332824707031, 6.3333740234375) location (-2.33332824707031, 6.3333740234375) 2Square (100.333320617676, 100.666618347168) location (100.333320617676, 100.666618347168) 3Square (-1.66666412353516, 7.66672515869141) location (-1.66666412353516, 7.66672515869141) 4Square (100.999992370605, 101.333267211914) location (100.999992370605, 101.333267211914) 5Square (-0.333320617675781, 10.0001068115234) location (-0.333320617675781, 10.0001068115234) 6Square (101.666641235352, 102.33325958252) location (101.666641235352, 102.33325958252) 7Square (1.66670227050781, 13.3334121704102) location (1.66670227050781, 13.3334121704102) 8Square (102.666625976562, 103.999969482422) location (102.666625976562, 103.999969482422) 9Square (2.00003814697266, 14.0000152587891) location (2.00003814697266, 14.0000152587891) 10Square (103.666618347168, 105.666679382324) location (103.666618347168, 105.666679382324)
「座標がズレている感じ」ということは、座標はズレていないということでしょうか?
「座標がズレている感じ」とは原因がわかないので感じと言ったのですが・・座標はズレているからこうなると言っているのでしょうか?
実際の座標がどうなっているか調べていないということでしょうか?調べていないのなら調べて下さい。
なるほど、そういう意味だったのですね、調べてみます。
eventとズレに関係はないでしょうか?
すみません、with event: UIEvent?を変更with: UIEvent?に変更してみたりしたのですが、変わりませんでした。これの事を言われているのかもピンと来ていません。
eventは関係ないようなので元に戻しておいて下さい。そもそもの質問なのですが、何をしようとしているのでしょうか?画面内のタップした位置に四角を移動させたいのでしょうか?
回答ありがとうございます。分けて書く事ができれば、わかりやすく管理できると思って質問しました。
そういうことではなくて、何をしようとしているコードなのか?ということです。例えば、画面内のどこをタップ(ドラッグ)しても四角が移動するのか、それとも、四角をドラッグしたときだけ移動するのか、というようなことです。
四角をドラッグしたときだけ移動するようにしたかったです。
回答1件
あなたの回答
tips
プレビュー