VirtualBoxにUbuntu16.04.3をインストールしてRailsの環境+αを作ったときのメモ
OSインストール後のセットアップメモ
完全に自分用なので保証できません
// 必要なもの sudo apt-get install -y git libssl-dev ruby-dev libreadline-dev sqlite3 libsqlite3-dev nodejs sudo apt-get update // rbenvのインストール git clone https://github.com/rbenv/rbenv.git ~/.rbenv git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc // rbenvがインストールできているか確認 rbenv -v // Rubyのバージョンの指定 rbenv install --list rbenv install 0.0.0 rbenv global 0.0.0 // Rubyのバージョン確認 ruby -v // Railsのインストール gem install bundler gem install rails // VScodeのインストール // 公式サイトからダウンロード sudo dpkg -i ファイル名.deb // 共有フォルダ // デバイス→Guest Additions CD実行後 // 共有フォルダへのアクセス権追加 sudo gpasswd --add ユーザ名 vboxsf // 再起動 // Google Chromeのインストール // 公式サイトからダウンロード sudo apt-get install libappindicator1 sudo dpkg -i ファイル名.deb
とりあえずおわり。
ラズベリーパイを購入~
ラズベリーパイを購入
amazonで一式購入。(誕生日プレゼントに買ってもらったw)
お手軽な値段もしっかりしたミニミニPCですごいなーって思った。
キーボードやマウスは余ってたもので代用。
開封前の写真撮り忘れた。
セットアップ
↓参考にさせていただいたサイト様。
liginc.co.jp
SDカードが64GBだったので
FAT32でのフォーマットに手こずった。色々なソフトを試した。
最終的にできたのが↓
I-O DATA ハードディスクフォーマッタ | サポートライブラリ | IODATA アイ・オー・データ機器 | IODATA アイ・オー・データ機器
ここからソフトをダウンロードして使った。
やってみたいこと
VPNサーバーを立てたり、ファイルを触れるようにしたいな~とか。
Unityで別のシーンを読み込む
読み込みたいシーンを用意する
左上のFileから新しいシーンを作って保存。
今回はわかりやすいようにUIを適当に配置して
としてみた。
シーンを読み込むためのスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class SceneLoad : MonoBehaviour { void Update () { if (Input.GetKeyDown (KeyCode.Space)) { SceneManager.LoadScene("test2"); } } }
スペースキーを押したとき、"test2"という名前のシーンを読み込む仕組みだ。
シーンを読み込む
作成したスクリプトをSceneLoadと名付けた空のオブジェクトにアタッチしていく。
(これは移動前のシーンに作成する。)
できたらゲームを再生してみる。
スペースキーを押すと画面が切り替わるのがわかるはず。
最後に
これで別シーンの読み込みができるようになった。
タイトルとか曲選択とかプレイモードの切り替えに使っていくぞ~。
Unityでcsvファイルの読み込みをする
csvファイルを読み込むクラス
csvファイルはコンマで要素を区切ったファイルだから、コンマ区切りで
2次元配列に要素を格納していく。
そこでCSVReader君をお呼びした。
私の制作中の音ゲーのスクリプトの一部をチラ見せ。
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; public class CSVReader : MonoBehaviour { public List<string[]> csvDatas = new List<string[]>(); public void CsvRead (string musicName) { // csvをロード TextAsset csv = Resources.Load (musicName) as TextAsset; StringReader reader = new StringReader (csv.text); while (reader.Peek () > -1) { // ','ごとに区切って配列へ格納 string line = reader.ReadLine (); csvDatas.Add (line.Split (',')); } } }
CsvRead関数に曲名を引数として持たせ、曲名のファイルを読み込ませている。
読み込む場所はResources/下だけど、
TextAsset csv = Resources.Load ("abc/" + musicName) as TextAsset;
とするとResources/abc/下で曲名のファイルを探してくれる。
読み込んでみる
ここで、さらにゲームの流れを管理しているGameManagerさんを用意する。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour { public string musicName; // 曲名 private CSVReader musicData = new CSVReader (); // 譜面データ void Start() { musicData.CsvRead(musicName); } }
これをGameManegerと名付けたオブジェクトにアタッチしよう。
今回用意したテスト用のtest.csvはこんな感じ。
1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16
忘れずInspector上から曲名を仮入力して、シーンを再生すると~。
_人人人人人人人人人_
> 何も起こらない <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
そりゃそうだよ読み込んでるだけだからね。
読み込めてるか確認しよう
Debug.Logさんの出番だよ~
っということでDebug.Logで読み込めてるか確かめてみよう。
void Start() { musicData.CsvRead(musicName); for (int i = 0; i < musicData.csvDatas.Count; i++) { for (int j = 0; j < musicData.csvDatas[i].Length; j++) { Debug.Log("csvDatas[" + i + "][" + j + "] = " + musicData.csvDatas[i][j]); } } }
適当にforを回してみる。
読み込めてるぞ~。
Unityでオブジェクトの移動をする
オブジェクトの移動
フレーム単位での移動
Unityで一番最初に書く人も多いであろうオブジェクトの移動スクリプト。
x方向に動かしたい場合について考えていこうと思う。
書くとしたらこんな感じだろうか?
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehaviour { // 変化量 public float dx; void Update() { // dxは任意の値 this.transform.position += new Vector3(dx, 0, 0); } }
これで毎フレーム(dx, 0, 0)の値だけ座標が加算されていく。
this.transform.positionはこのスクリプトが貼り付いてるオブジェクトの
座標(x, y, z)のこと。そこに変化量を加えていく感じ。
Update関数はフレーム毎更新だからFPS(1秒毎の画面の更新回数)の値次第で移動速度が変わって見えてしまう!
つまり処理が遅いと遅く移動しているように見える。処理が早いときはその逆。
できれば等速直線運動してほしいよね~?って人は次の項目へ。
時間単位での移動
等速直線運動の式は距離x、速さv、時間tとするとき
x = v * t
が成り立ってるのは既知だと思われる。
(きのしたのはげおやじ、って覚えたよね?)
これをスクリプトにしたいとき、
x = オブジェクトの位置
v = 任意の速度
t = 経過時間
を設定してあげればいいな~ってことで
書こう。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehaviour { // 変化量 public float dx; void Update() { // dxは任意の値 this.transform.position += new Vector3(dx * Time.deltaTime, 0, 0); } }
Time.deltaTimeは1フレーム前からの経過時間を表してくれているから
変化量 * 時間の形にすることができた。
これで時間単位で移動してくれるようになる。
変化量dxの変更
変化量dxはpublicな変数だから、Inspector上からも数値を代入できる。
Moveスクリプトに表示されているdxに任意の値を入力したらそれが変化量になる。