C#言語をマスターするまでのお話

C#言語をマスターするまでのお話

黙示録的ページやな。 未来の自分へのプレゼント

Amebaでブログを始めよう!
オキュラスリフトによるFPS視点を実装していきます
ソースコードはこのようになっています


ing UnityEngine;
using System.Collections;

public class camera : MonoBehaviour {
    GameObject player1;//ゲームオブジェクトの準備
    GameObject playerC;//ゲームオブジェクトの準備
void Start () {
        player1 = GameObject.Find("Player");
//Playerでゲームオブジェクトを検索し返します
        playerC = GameObject.Find("playerCore");
    }
void Update () {
//player1の角度Xに自身の角度を代入しています
        player1.transform.eulerAngles = new Vector3(0, transform.localEulerAngles.y, 0);
        if (Input.GetKey("w"))
        {
            playerC.transform.Translate(player1.transform.forward * 1.0f);//キャラクターを前方に0.1移動させる
        }
        if (Input.GetKey("s"))
        {
            playerC.transform.Translate(player1.transform.forward * -1.0f);//キャラクターを前方に0.1移動させる
        }
        if (Input.GetKey("d"))
        {
            playerC.transform.Translate(player1.transform.right* 1.0f);//キャラクターを前方に0.1移動させる
        }
        if (Input.GetKey("a"))
        {
            playerC.transform.Translate(player1.transform.right * -1.0f);//キャラクターを前方に0.1移動させる
        }
    }
}



オブジェクトの親子関係は
PlayerCore
|-mainCamera
|-player

このソースコードにより、オキュラスカメラとプレイヤーの角度が同期される(X字句のみ、)親のPlayerCoreの位置をplayerのz軸方向に移動させることによって替えら、Playerも移動できるということです
1:トリガーがオブジェクトの外に出た時
void OnTriggerExit2D(Collider2D col){}
ーーーーーーーーーーーーーーーーーーーーー

2:トリガーが衝突した一回だけ呼び出す
 void OnTriggerEnter2D(Collider2D col){}

ーーーーーーーーーーーーーーーーーーーーーー
3:CollisionEnterがぶつかった時
void OnCollisionEnter2D(Collision2D collision) {  }

ーーーーーーーーーーーーーーーーーーーーーー

4:一定間隔で関数を呼び出す
 // InvokeRepeating("関数名",初回呼出までの遅延秒数,次回呼出までの遅延秒数)
InvokeRepeating("Create", 1, 1);

ーーーーーーーーーーーーーーーーーーーーーー

5:一定間隔で呼び出している行動をやめる
 CancelInvoke();

ーーーーーーーーーーーーーーーーーーーーーー

6:インスタンスを指定の場所に作成
//atk1を指定した場所に作成している
Instantiate(ATK1, gameObject.transform.localPosition, Quaternion.identity);

ーーーーーーーーーーーーーーーーーーーーーー

7:オブジェクトを指定
public GameObject hoge;

ーーーーーーーーーーーーーーーーーーーーーー

8:子オブジェクトの関数を呼び出す
 hoge.SendMessage("ScoreM", 30);

ーーーーーーーーーーーーーーーーーーーーーー

9:オブジェクトを削除
 Destroy(gameObject);

ーーーーーーーーーーーーーーーーーーーーーー

10:テキストを上書き
text.text = "Score:" + T_Kiti_Hp;

ーーーーーーーーーーーーーーーーーーーーーー

11:力を加える
GetComponent<Rigidbody2D>().velocity = new Vector2(0, 100);

ーーーーーーーーーーーーーーーーーーーーーー

12:アプリケーションのシーンを変更
Application.LoadLevel("title");

ーーーーーーーーーーーーーーーーーーーーーー

13:ログを残す
Debug.Log("OK");

ーーーーーーーーーーーーーーーーーーーーーー

14:数秒後に関数を実行
Invoke("DelayMethod", 3.5f);

ーーーーーーーーーーーーーーーーーーーーーー

15:速度をつけてあげる
 GetComponent<Rigidbody2D>().velocity = new Vector2(AtkSpeed, 0); 
 
ーーーーーーーーーーーーーーーーーーーーーー
Visual Studio 2015ではツールボックスのパーツを置くだけでレイアウトを自由に設定できる。 ボタンなどをパパッとセットすることができるのでプログラミングできない人でも外見だけならすぐに作れてしまう。



問題は設置した後に、その設置したパーツがどのような動作をするかを入力していく作業である。


初めに、設置したパーツのプロパティからアイテムのnameを設定する。
その次に設置したパーツをダブルクリックすると。自動でソースコードが作成される。

例えば、ボタンを設置して、そのボタンをダブルクリックすると、そのボタンが実際にクリックされた時に呼び出されるメソッドが自動で生成されるわけだ


後はそこに処理を加えてあげれば完了である。

private void button1_Click(object sender, RoutedEventArgs e)
        {
            System.IO.Directory.CreateDirectory(@"C:\");
        }

この部分で実際にソースコードを手入力した部分はSystem~~~部分のみで、ほかは自動生成である。



パーツを設置するだけではデザインに限界が出てくる。
例えば、背景を透明化したい、Windowが邪魔だ だとかだ
そういう場合はXAMLのコード自ら編集する必要が出てくる。調べれば出てくるので割愛するが、ちょっと工夫するとこんな感じに作れるから将来の自分悩んだらXAMLを直接編集することを思い出してくれよ





GUIをexeファイルにしましょう。
やり方は簡単で、デバッグではなくReleaseすればいいだけ
そうするとファイル奥底にexeファイルが作られる。
GUIが利用できると一気に形に近づく気がします。
GUIを制作する場合は WPFアプリケーションを選択してください。

基本的にツールボックスからペタペタ貼り付ければいいだけである。

ボタンに機能を付けたい場合は
貼り付けたツールに名前を付けて、ツールをダブルクリック。
自動でソースコードが生成されます

 private void button_Click(object sender, RoutedEventArgs e)
        {}

この中に処理を書いていけばいいわけです

これでGUIの基本の処理は終了 簡単だね