転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

ゲーム開発

【Unity】ゲーム製作日記 iOSアプリ第3弾を作り始める

iOSアプリをAppStoreへ公開するまでの流れは一通り分かったので、次は色々こだわったゲームを作ろうと思う。けど、まだまだ自分ができることは少ないので、あくまで出来る範囲で。 まずは今作っているゲームの概要から。基本は「落ちゲー」で、ひたすら落下…

【Unity】iPhoneアプリ第2弾を公開しました。プログラムを覚えたら、何かを作ろうというがそれが結構難しい。

コツコツとUnityを使ったアプリ製作を続けてます。 uuc1h.hatenablog.jp 自分は全くのド素人から30歳でSEに転職し、プログラムを覚えた。プログラムを覚えるために様々な入門書を読んだ。オススメな入門書は、やっぱりサンプルがついているタイプ。本の通り…

【Unity】オーディオソースをソースコードで制御し、鳴らす方法

AudioSourceコンポーネントをアタッチし、AudioClipにアタッチしておく。 private AudioSource shotSound; void Start () { shotSound = GetComponent<AudioSource>(); } void shot() { shotSound.Play(); }</audiosource>

【Unity】BGMを鳴らす方法

Main CameraのAudio Sourceコンポーネントに、オーディオソースをアタッチする。・Loopにチェックを入れる。・Play On Awakeにチェックを入れる。

【Unity】GameObjectをn秒後に削除する方法

public float lifeTime = 3.0f; void Start () { Destroy(gameObject, lifeTime); }

【Unity】プレイヤーの移動範囲を画面内に制限する方法

void Clamp() { // 画面左下のワールド座標をビューポートから取得 Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0)); // 画面右上のワールド座標をビューポートから取得 Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1,…

【Unity】ゲームスタートからの秒数をUIに表示し、記録をつけるスクリプト

public class GameManager : MonoBehaviour { public Text time; public Text highTime; private int seconds; private void Start() { StartCoroutine(CountTime()); } // Update is called once per frame void Update () { time.text = "時間:" + second…

【ゲーム開発記】赤いボールを撃ち落とせ①

unityroomにあげる用のゲームを作り始めた。ちなみに前回unityroomに投稿したゲームは、閲覧数が100を超えてた。作ったゲームが実際に遊んでもらっていることが分かったので、非常にうれしい。 赤いボールからひたすら逃げろ | 無料ゲーム投稿サイト unityro…

【Unity】マウスをクリックしたら、弾を発射する方法

public GameObject bullet; // Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)) { shot(); } } void shot() { Instantiate(bullet, transform.position, transform.rotation); } ちなみに、弾の方のスクリプトは以下。 p…

【Unity】GameObjectをキーボードで操作する方法②

public float speed = 10; Rigidbody rb; void Start () { rb = GetComponent<Rigidbody>(); } // Update is called once per frame void Update () { float x = Input.GetAxisRaw("Horizontal"); float y = Input.GetAxisRaw("Vertical"); Vector2 direction = new Vec</rigidbody>…

【Unity】シーンの再読み込み方法

>|cs| // 現在のシーン番号を取得 int sceneIndex = SceneManager.GetActiveScene().buildIndex; // 現在のシーンを再読込する SceneManager.LoadScene(sceneIndex); ||

【Unity】ハイスコアの保存と表示

// ハイスコアを更新 if(PlayerPrefs.GetInt("HighScore") < allSeconds) { // ハイスコアの保存 PlayerPrefs.SetInt("HighScore", allSeconds); } // ハイスコアの呼び出し highScore.text = "HIGH SCORE:" + PlayerPrefs.GetInt("HighScore"); // 変更され…

【Unity】Prefabから自動生成する際、生成位置をランダムにする方法

Vector3 vector3; public void createEnemy() { vector3 = new Vector3(Random.Range(-5.0f, 5.0f), transform.position.y, transform.position.z); // Enemyを作成する GameObject enemy = (GameObject)Instantiate(enemyOrigin, vector3, Quaternion.ident…

【Unity】Prefabからゲームオブジェクトを自動生成する方法

1.GameObjectを作成し、以下スクリプトをアタッチする。 public class Emitter : MonoBehaviour { // Enemyプレハブを格納する public GameObject enemyOrigin; public void createEnemy() { // Enemyを作成する GameObject enemy = (GameObject)Instantiate…

【Unity】秒数をカウントし、UIに表示する方法

1.GameObjectを作成し、以下のスクリプトをアタッチする const int RecoSeconds = 10; // Textオブジェクト public Text time; private int seconds = 0; // Update is called once per frame void Update () { // UI time.text = "TIME:" + seconds; // sec…

2つめのiOSアプリをリリースしようとしたら、4.3リジェクトを食らってしまった話

何より数が大事だと思い、クオリティーは気にせずiOSアプリをガンガンリリースしていこうと思い、さっそく2つめのiOSアプリを審査に出したところ、4.3 Design: Spamなるリジェクトを食らいました。で、この「4.3 Design: Spam」の内容を調べてみたところ、か…

【Unity】ゲームオブジェクトを自動で動かし、オブジェクトに当たると反射する方法

動かしたいオブジェクトに、Physics Materialをアタッチする。 以下スクリプトをアタッチする。 // 移動速度 public float speed = 5.0f; // Rigidbodyコンポーネント Rigidbody rb; // Use this for initialization void Start () { // Rigidbodyコンポーネ…

【Unity】衝突時、ゲームオブジェクトを削除する方法

private void OnTriggerEnter(Collider other) { // 地面に衝突したら自オブジェクト削除 if(other.gameObject.tag == "Ground") { Destroy(gameObject); // Playerと衝突したら、自オブジェクトとPlayerオブジェクトを削除 } else if (other.gameObject.tag…

【Unity】Rigidbodyをアタッチしても、重力の変化を受けなくする方法

Use Gravityのチェックを外す。

【Unity】自オブジェクトのコンポーネントを取得するスクリプト

GetComponentコンポーネント名> // Rigidbodyコンポーネント Rigidbody rb; // Use this for initialization void Start () { // Rigidbodyコンポーネントの取得 rb = GetComponent<Rigidbody>(); }</rigidbody>

【Unity】シーンの重力変化

シーンの重力は、Editor / Project Settings / Physicsから確認できる。 この重力を変化させるスクリプトは、以下。 // 重力加速度 const float GravityF = 9.81f; // 重力の適用具合 public float gravityScale = 1.0f; // Update is called once per frame…

【Unity】Unityエディター上で行う操作と、実機で行う操作の処理を分ける場合

携帯の加速度センサーを使った処理を実装する場合、Unityエディター上で操作できなくなってしまう。 携帯で操作する場合は加速度センサー、Unityエディター上でだけキーボードで操作するといったように処理を分ける場合は、 // Unityエディター上で操作を行…

【Unity】Is Triggerについて

Is Triggerとは Colliderコンポーネントの設定の一つ。チェックを入れると、物理的接触が発生せずにすり抜ける。代わりに、トリガー(OnTriggerEnterなどのイベントメソッドが呼び出される)が発生する。 物理的接触を発生させながら、トリガーも発生させた…

【Unity】シーンの再読み込み方法

// 現在のシーン番号を取得 int sceneIndex = SceneManager.GetActiveScene().buildIndex; // 現在のシーンを再読込する SceneManager.LoadScene(sceneIndex);

【Unity】非アクティブなゲームオブジェクトをアクティブにする方法

public GameObject testObject; testObject.SetActive(true);

【Unity】指定したゲームオブジェクトをカウントし、画面に表示させる方法

1.新規でGameObjectを作成し、以下のようなスクリプトをアタッチする。 public class GameController : MonoBehaviour { public Text scoreLabel; public GameObject winnerLabelObject; public void Update() { int count = GameObject.FindGameObjectsWith…

【Unity】Canvasを使ったUIの追加方法

1.UI / Canvas を作成する。 2.Render ModeからScreen Space - Cameraを選択。 3.Render CameraにMain Cameraをドラッグ&ドロップ。 4.Canvas Scaler / UI Scale Mode をScale With Screen Sizeに設定する。 5.Reference Resolutionに画面サイズ(解像度)…

【Unity】タグを使った接触判定

1.InspectorビューのTagを設定する。 2.以下スクリプトを作成する。 public class Item : MonoBehaviour { // トリガーとの接触時に呼ばれるコールバック private void OnTriggerEnter(Collider other) { if(other.CompareTag("Player")) { Destroy(gameObje…

【Unity】TPSのようにカメラをプレイヤーの動きに追従させる方法

1.Main Cameraオブジェクトに、以下スクリプトをアタッチする。 public class FollowPlayer : MonoBehaviour { // ターゲットへの参照 public Transform target; // 相対座標 private Vector3 offset; private void Start() { // 自分自身とtargetとの相対距…

【Unity】Unityの勉強記録

キーボード操作 uuc1h.hatenablog.jp マウス操作 UIから操作 uuc1h.hatenablog.jp uuc1h.hatenablog.jp カメラ操作 キャラクター移動 uuc1h.hatenablog.jp 接触判定 uuc1h.hatenablog.jp uuc1h.hatenablog.jp Prefab uuc1h.hatenablog.jp uuc1h.hatenablog.j…

【スポンサーリンク】