0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自機を複数のパーツで構成し換装可能にする方法を教えてください

Last updated at Posted at 2020-05-03

Swiftで2Dのスクロールゲームを作ろうとしています
コードを触ること自体が全くの初心者なので
本も買いましたしログも漁ってみましたが
なかなか答を得ることが出来ません。どなたか助けてください

SpriteKitで作り始めました
自機を3つのパーツで構成し
各パーツに独自のプロパティを設定し
それぞれを換装できるような仕組みを作りたいです

Plistやenum、 UserDefaultに関するログも漁りましたが
どうしても理解が追いつきません

以下が現状書いてある部分のコードです
ring
core
wingはそれぞれ自機の構成パーツです

GameScene.swift
import SpriteKit
import GameplayKit



class GameScene: SKScene {
    
    
    //Nodeのインスタンス化
    var wing = SKSpriteNode()
    var core = SKSpriteNode()
    var ring = SKSpriteNode()
    var title = SKSpriteNode() //タイトル
    var startBottom = SKSpriteNode() //スタートボタン
    
    override func didMove(to view: SKView) {
        
        //背景の表示
        var sizeRate: CGFloat = 0.0
        var myShipSize = CGSize(width: 0.0, height: 0.0)
        let offsetY = frame.height / 20
        let fieldImageLength: CGFloat = 1125
        for i in 0...Int(frame.size.width / fieldImageLength) + 1 {
            for j in 0...Int(frame.size.height / fieldImageLength) + 1 {
                let field = SKSpriteNode(imageNamed: "back")
                field.position = CGPoint(x: CGFloat(i) * fieldImageLength, y: CGFloat(j) * fieldImageLength)
                field.zPosition = -1
                addChild(field)
            }
        }
        
        //画像ファイルの読み込み
        
        self.wing = SKSpriteNode(imageNamed: "w1")
        self.ring = SKSpriteNode(imageNamed: "r1")
        self.core = SKSpriteNode(imageNamed: "c1")
        
        //自機を幅の1/6にするための倍率を求める
        sizeRate = (frame.width / 1.2) / self.wing.size.width
        
        //自機のサイズを計算する
        myShipSize = CGSize(width: self.wing.size.width * sizeRate, height: self.wing.size.height * sizeRate)
        
        //自機のサイズを設定する
        self.wing.scale(to: myShipSize)
        self.ring.scale(to: myShipSize)
        self.core.scale(to: myShipSize)
        
        //自機の表示位置を設定する
        self.wing.position = CGPoint(x: 0, y: (-frame.height / 2) + offsetY + myShipSize.height / 2)
        self.ring.position = wing.position
        self.core.position = wing.position
        
        //シーンに自機を表示する
        addChild(self.wing)
        addChild(self.ring)
        addChild(self.core)
       
        
        
    }
    
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?