Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity 動く床を簡単に作ってオブジェクトを落としてみよう! Unity学習26

今回は、動く床をScriptから動かせる様にして
オブジェクトを設置してそれが落ちるまでの説明になります。

※動画での説明が好みの方は下記動画をご覧ください。
ブログ記事の説明がいい方はそのまま読み進めてください。

youtu.be


動く床を簡単に作ってオブジェクトを落としてみよう!

f:id:Phoenix9056:20200425012514p:plain

落ちゲーの作成であったりステージ内での動く床、
またはスクリプトを使えば壁や他のオブジェクトにも使えるので
結構多様性があるかつ簡単な内容になっています。

3Dでプロジェクトを開いていきましょう。



f:id:Phoenix9056:20200425012708p:plain

まず、Hierarchy内にある①の+⇨3D Object⇨Cubeをクリックして
②のCubeを作成してください。

Inspector内の③のTransform内にある
Scaleの値を、X⇨5、Y⇨0.5、Z⇨5にして
PositionRotation全て0にします。

※作る場所は自分で好きな様にしてもいいです。
今回は分かりやすい様に値を入れて場所を決めていきます。


f:id:Phoenix9056:20200425013333p:plain

また同じ様にHierarchy内の+⇨3D Object⇨Cubeから
②のCube(1)を作成します。
地面のCubeに色が付いていますが分かりやすい様につけました。

一応色の付け方ですが、Project内の自分の分かりやすい所で、
右クリック⇨Create⇨Materialを選択して③のMaterialを作成して
InspectorMain Mapsにある、Albedoから色を選択して
Materialをドラッグして色をつけたいCubeドロップすると色が変わります。

HIerarchy内にある②のCube(1)をクリックして、
Inspector内のTransformPositionはY⇨0.5
Rotationは全て0。
ScaleのX⇨5、Y⇨0.5、Z⇨2.5にして少し小さく作ります。


f:id:Phoenix9056:20200425014410p:plain

今度はCube(1)を動かすスクリプトを作っていきます。
Project内の自分の分かりやすい所で、右クリック⇨Create⇨C# Scriptをクリックして
①のスクリプトを作成します。
名前は、CubePusheにしてください。

次のコードをコピー&ペーストするか同じ記述にしてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubePushe : MonoBehaviour
{
    //float型を変数moveStateで宣言します。
    public float moveState;
    //float型を変数speedで宣言します。
    public float speed;
    //Vector3型を変数vectorで宣言します。
    Vector3 vector;

    void Start()
    {
        //初期位置を保存します。
        vector = transform.localPosition;
    }

    
    void Update()
    {
        //z軸に移動する移動範囲とスピードの計算をします。
        float z = moveState * Mathf.Sin(Time.time * speed);
        //割当られた数値を元にz軸のポジションを決定します。
        transform.localPosition = vector + new Vector3(0, 0, z);
    }
}

出来た①のスクリプトHierarchy内にある②の
Cube(1)にドラッグ&ドロップしてアタッチしてください。

Cube(1)Inspectorの一番下にあるAdd Componentをクリックして、
Rigidbodyと検索して④のRigidbodyを追加します。

⑤のIs Kinematicにチェックを入れてください。
今回はスクリプトで動かして行くので物理演算をする必要が
無い為チェックを入れました。

Rigidbodyを追加したのは他のRigidbodyが追加されている
オブジェクトに影響を与えるのにUnityが推奨している為です。

⑥の追加されたCubePusheスクリプト
Move Stateの値を2に設定します。
Speedは0.5にしましょう。

好きな様に数値を変えてみるのもいいですね!
Move Stateの数値は設定した数値のーから+までの距離を往復します。


f:id:Phoenix9056:20200425020244p:plain

最後に実際にオブジェクトを落とせるのか確認するために、
Hierarchy内にある①+⇨3D Object⇨Cubeを選択して
②のCube(2)を作成しましょう。

また同じ様にInspector内の一番下にあるAdd Componentから
③のRigidbodyを追加しましょう。

それでは再生して見ましょう!!

f:id:Phoenix9056:20200425020635g:plain

見事に落ちたでしょうか?
是非良ければ下に落としたい人や
恨みのある人なんかをこのスクリプト
使って落としてストレス解消してください笑笑
冗談ですが。

今回はこんな感じで!
ご視聴ありがとうございました!

関連記事

※本格的に3Dゲームを作っていきたい方は下記カテゴリを参考にしてください。
www.unityprogram.info

※オススメの無料アセットは下記カテゴリより。便利なアセットが有ます。
www.unityprogram.info

※Unityを学習していきたい方は下記カテゴリを覗いて見てください。
www.unityprogram.info

※実際に使って読んでみたオススメの本は下記カテゴリからご覧ください。
www.unityprogram.info

※初心者に向けた簡単な記事は下記カテゴリより。
www.unityprogram.info