趣味とお勉強に少しずつ進めてます。
↓この本
書籍『Unity入門』 - Top page
チャプターを2/3くらい進めたところで
サンプルソースを参考に作ってみたもの…。
↑こっちはスクリーンショット
Hierarchyタブ → Create → Cube で
作った箱をスケールかけたりしながら背景を作成
wikipedia先生によると本家は縦20、横10ブロックだそうな
物理マテリアルを設定するよ
Projectタブ → Create → Physic Material で
物理用のマテリアルをこさえてさっきのBGオブジェにドラッグ&ドロップ!
摩擦係数や跳ね返る強さもここで設定できます
空オブジェクトを作り、それの子にCubeを新しく作ってブロックの形に並べる
背景と同じく物理マテリアルも設定しておきます
次に Projectタブ → Create → Prefab でプレハブを作り
そこへブロックオブジェクトをドラッグ&ドロップ!
この工程を全部の形で行います
ブロックの親に対して設定します
あと2D的な動きをさせたいなと思ったので
Rigidbodyの設定の Constraints で
Z軸移動と、XY回転にチェックを入れて動かないようにしました
ウインドウ上段にあるプレイボタンを押して落下テストをしてみると面白いです
ここがブロック発生ポイントになります
ブロックを生成する処理を作るよ
Projectタブ → Create → Javascriptで
新規スクリプトを作成し、以下の処理を加えました
ステージ作るよ
Hierarchyタブ → Create → Cube で
作った箱をスケールかけたりしながら背景を作成
wikipedia先生によると本家は縦20、横10ブロックだそうな
物理マテリアルを設定するよ
Projectタブ → Create → Physic Material で
物理用のマテリアルをこさえてさっきのBGオブジェにドラッグ&ドロップ!
摩擦係数や跳ね返る強さもここで設定できます
ブロックも作るよ
上段メニューの GameObject → Create Empty で空オブジェクトを作り、それの子にCubeを新しく作ってブロックの形に並べる
背景と同じく物理マテリアルも設定しておきます
次に Projectタブ → Create → Prefab でプレハブを作り
そこへブロックオブジェクトをドラッグ&ドロップ!
この工程を全部の形で行います
ブロックにリジッドボディを設定するよ
上段メニューの Compornent → Physics → Rigidbody をブロックの親に対して設定します
あと2D的な動きをさせたいなと思ったので
Rigidbodyの設定の Constraints で
Z軸移動と、XY回転にチェックを入れて動かないようにしました
ウインドウ上段にあるプレイボタンを押して落下テストをしてみると面白いです
ブロックを湧き出す仕組みを作るよ
またCreate Emptyして、上の方に配置しますここがブロック発生ポイントになります
ブロックを生成する処理を作るよ
Projectタブ → Create → Javascriptで
新規スクリプトを作成し、以下の処理を加えました
// ------------------------------
// ブロック延々生み出す君
// ------------------------------
//いんすぺくたに出しとく変数
var interval : float; //ブロックが出てくる間隔
var randRot : float; //ブロック出たときのランダムZ回転値
var blockPrefabs : GameObject[] = []; //ブロックプレハブを登録する入れ物
//表に出さなくていい変数
private var timer : float; //次のブロックを出すまでの残り時間
//ゲーム開始時の処理だよ
function Start () {
//タイマー0にしてブロック1コ目出しとく
timer = 0.0;
}
//毎フレーム実行される処理だわさ
function Update () {
//お時間は減り続ける一方です
timer -= Time.deltaTime;
//時間が来たら出てってください
if (timer < 0.0) {
//次のブロックをランダムに選ぶよ
var prefab : GameObject = blockPrefabs[Random.Range(0, blockPrefabs.length)];
//ランダム回転も与えましょう
transform.rotation = Quaternion.AngleAxis(Random.Range(randRot * -1, randRot), Vector3(0, 0, 1));
//インスタンスが巣立ちます
Instantiate(prefab, transform.position, transform.rotation);
//次の人のためにタイマーは戻してね
timer = interval;
}
}







0 件のコメント:
コメントを投稿