Swift初心者です。
Sprite Kitで、SKShapeNodeへのSKPhysicsBodyの設定の仕方をご教授ください。
プログラム中にある「跳ね返らない」部分が理解できません。
本来であればSKShapeNodeに沿ってSKPhysicsBodyを設定しているので、全て跳ね返るはずなのですが…
間違った部分をご指摘いただけますと幸いでございます。
----- プログラム ---------------------------------------------------------------
override func didMoveToView(view: SKView) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: -1.0)
var points = [CGPoint(x: 0, y: 0),
CGPoint(x: self.frame.width, y: 0),
CGPoint(x: self.frame.width, y: 10),
CGPoint(x: 0, y: 10),
CGPoint(x: 0, y: 0)]
let hoge = SKShapeNode(points: &points, count: points.count)
hoge.fillColor = SKColor.redColor()
hoge.position = CGPoint(x: 0, y: 0)
hoge.physicsBody = SKPhysicsBody(rectangleOfSize: hoge.frame.size)
hoge.physicsBody?.dynamic = false
self.addChild(hoge)
makeBall()
}
func makeBall() {
let texture = SKTexture(imageNamed: "ball")
let sprite = SKSpriteNode(texture: texture)
sprite.physicsBody = SKPhysicsBody(texture: texture, size: sprite.size)
//sprite.position = CGPoint(x: 300, y: 300) // 跳ね返らない
//sprite.position = CGPoint(x: 200, y: 300) // 跳ね返らない
sprite.position = CGPoint(x: 100, y: 300) // 跳ね返える
self.addChild(sprite)
}
----- プログラム ---------------------------------------------------------------
※ball.pngの画像サイズは40px40pxです。
※Xcode6.3.2
No.1ベストアンサー
- 回答日時:
提示いただいたコードの13行目:
hoge.physicsBody = SKPhysicsBody(rectangleOfSize: hoge.frame.size)
ここで設定した長方形(Rectangle)は、原点(SKNodeのプロパティposition)を中心にしています。おそらくあなたは、原点を左下にした長方形になっているときめてかかっているように思えます。
hoge.physicsBody = SKPhysicsBody(rectangleOfSize: hoge.frame.size, center: CGPointMake(hoge.frame.size.width / 2.0, hoge.frame.size.height / 2.0))
こう変更してみてください。
ただ、SKNodeについては、すべからくオブジェクトの中心を原点とした描画、座標設定をしたほうが、ストレスのないプログラムになるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- JavaScript javascriptで文字分割は、 split() などメソッド不要??? 4 2023/02/06 22:50
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
softonicという物をダウンロー...
-
ドナルドウズを消す。
-
開発規模について
-
Android SDKのアンインストール...
-
Excel2010 開くとすぐ消える
-
写真画像などの画像がみれない
-
拡張子はなぜ、大文字と小文字...
-
Androidアルバムの画像を消去で...
-
ひとつのファイルを一括で複数...
-
エクセルでの計算式もしくはシ...
-
フォルダの並び替えの項目を固...
-
フォルダの中に1個しかファイ...
-
Windowsフォルダ内のファイルと...
-
デスクトップ白色アイコン名の...
-
6ヶ月経過日を算出する式
-
DOSコマンドでファイルをコピー...
-
XCOPYでネットワーク越しにコピ...
-
パソコンのスキップとは何ですか?
-
Windows10 で登録した外字を他...
-
複数のフォルダへ同時にファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
softonicという物をダウンロー...
-
ドナルドウズを消す。
-
開発規模について
-
Android SDKのアンインストール...
-
著作物のコンピュータープログ...
-
質問です。 仮分数はどういう状...
-
KDriveがマイコンピューターか...
-
オーロラクロック2(久富電機)で...
-
ハードウェアってなんですか?
-
【COBOL】みずほ銀行の新MINORI...
-
RoxWatchTray13.exe システムエ...
-
Excel2010 開くとすぐ消える
-
常駐ソフトを停止させたいので...
-
cドライブからプログラムを削除...
-
いらないプログラムを消したい
-
Logicool Setpointのアンインス...
-
Internet Explorerのバージョン...
-
エクスプローラからNASのアイコ...
-
アンインストールできません
-
無料ウイルス対策ソフトavastを...
おすすめ情報