Unityで遊んでみる #1
こんばんわんわん。最寄りのスケート場が半年閉館になって悲しくなってるEOiだよ。今回はずっと触りたかったUnityの日記だよ~。
まずはインストール
かんたん。環境構築とかインストールで詰んで悲しくなることが多いのでめちゃくちゃありがたい。以下略。。。
チュートリアル?
まーったくUnityの事を知らないのでまずは分かりやすそうなチュートリアルからやっていくことに。
まず最初は「Unity 5でコインプッシャーゲームを作ろう」。テーマが面白そうだったので取り敢えず作ってみました。
すごくかんたん。やりたいことが直感的にできて、管理もかなり分かりやすい。これなら個人でもある程度のゲームを作れると思った。
参考にしたサイトにはない機能も追加してみたところ、やはり簡単。Unityの仕様とかをよくわかっていないので怪しいコードではありますが、逆に言えばそんな状態でもある程度動かせるということで、Unityのすごさを知りました。
今回触ってみたのはPusherScript.cs。Wキーを押すとコインを全て押し出すという機能を追加してみました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PusherScript : MonoBehaviour
{
Vector3 initPosition;
Vector3 newPosition;
bool wipeflag;
bool pushflag;
bool pullflag;
float wipestep;
// Start is called before the first frame update
void Start()
{
initPosition = this.transform.position;
wipeflag = false;
pullflag = false;
wipestep = 1;
}
// Update is called once per frame
void Update()
{
newPosition = new Vector3(
initPosition.x,
initPosition.y,
initPosition.z + Mathf.Sin(Time.time)*wipestep
);
this.GetComponent<Rigidbody>().MovePosition(newPosition);
if (Input.GetKeyDown(KeyCode.W))
{
wipeflag = true;
}
if (wipeflag)
{
if (wipestep < 3)
wipestep += (float)0.005;
if (Mathf.Sin(Time.time) > 0.99)
pullflag = true;
if (pullflag && Mathf.Sin(Time.time) < -0.99) {
wipeflag = false;
pullflag = false;
}
}
else if (wipestep > 1)
{
wipestep -= (float)0.001;
}
}
}
もうちょっといい方法があるかもしれないけど、真面目(?)に実装。
まずWキーが押されたらフラグを立てる。元々のプッシャーがMathf.Sin(Time.time)で動いていたので、一時停止してから他の制御を行って復帰するのは難しいと判断し、元々の動きに倍率を掛け、フィールドの端から端まで動くように。
また、一度プッシャーが下がりきらないとすべてのメダルが落ちないため、プッシャーが下がりきったフラグが立った後にプッシャーを押し切ったら処理から抜ける、という流れになっています。
次にやってみたのは「はじめてのUnity 玉転がしゲーム」。これはUIの説明や操作方法が分かりやすかったので読んで良かったと思った。
まとめ
Unityたのしい!のでもっと色々作りたい。イラストを自作する能力や時間が無いので、フリーの素材とかあればなぁ。というかありそう。
最近DiscordのBot開発に夢中なので更新はしばらく先になりそうですが、現在新しいゲームを製作中なので、次回作をお楽しみに!
Unityで遊んでみる #2(工事中...)