[Unity] ブロック崩しをあのアプリ風にする #1

チュートリアルのブロック崩しを一通り終えて思った。 カスタムしたいなと。
写経だけでは自分の血肉にならないので復習も込めて1から作ろうと。
 でも行き当たりばったりでやってもゴールが見えないので、最近動画広告でよく見る『〜ブレイカー』風に作っていこうと思います。

せっかくなんで3Dで作っていきます。



※チュートリアル風に書いていますがあくまで製作記です。あなたのコードに悪影響を与える可能性があります。用法用量を守って正しく読みましょう。

ベースとなるブロック崩しを作る

基本の部分はサクサクいきます

土台を作ってカメラ位置調整

まずCubeで土台を作る。昨今のスマホに合わせるためX9、Z16にしました。
あとは四方にCubeを4つ並べて壁にします。Yは1。
散らかってるのでCreateEmptyで名前をWallsにしてその中に突っ込んでます。
カメラはRotationをX90、PositionはX0 Y14,5 Z0がしっくりきました。ちょうど背面だけが映る形です。

ボールを作って動かす

Sphereを作り名前をBallに変える。Scaleを全て0.4、Sphere ColliderのRadiusも0.4。見にくいので赤いMaterialをつけました。
Add ComponentからRigidbodyとPhysic Materialを追加してこんな感じに設定。


BallにBall_MoveというScriptをつけます。

public class Ball_Move : MonoBehaviour {
    
    Rigidbody rig ;
    public float speed; //ボールの速度

    void Start () {
        rig = GetComponent<Rigidbody> ();
        rig.velocity = Vector3.forward +Vector3.right * speed ;
    }
}
speedはinspectorから適当に設定します。

再生して見ると..
動いた。

ブロックを作る

Cubeを作り名前をBlockにします。
ScaleはXとYを0.8、マテリアルをつけて色を変えています。
Ballに”Ball”というTagをつけておきます。
作成したBlockにBlock_lifeという名前でスクリプトをつけます。

public class Block_life : MonoBehaviour {

    public int life = 2;
    
    void Update () {
        if (life <= 0) {
             Destroy (gameObject);
        }
    }

    void OnCollisionEnter(Collision col){
//        if (col.gameObject.tag == "Ball") {      
        if(col.gameObject.CompareTag("Ball")){
//  
            life -= 1;
        }
    }
}

衝突したものがBallかどうか判定して2回ぶつかったら自分をDestroyします。
ちなみに①と②はやってることは同じだけど②の方がパフォーマンスに優れるそうです。

BlockをPrefab化していっぱい並べてみる。


スクリプトも動いているようです。

ベースの素材はだいたい出来たので次からはカスタムに入っていきます。

コメント