プログラム研究 備忘録

java,C#,Unity等の備忘録です。経済理論も少し。

Unity

Unity GUIメモ

・Label テキストや画像表示、Rectクラスで位置と範囲を指定。 テキストとテクスチャを一緒に表示したい場合、GUIContentクラスにまとめて指定することで表示ができる。他のコントローラ関数も同様。 ・BOX Labelと同じくテキストや画像を表示。背景画像に表…

ゲームルール

・一定時間が経過すると終了 ・プレイヤーのHPが0になると終了 ・ボスを倒すとゲームクリア まずは一定時間 ゲームオーバーのフラグ、クリアを二つ用意。 Update関数内で残り時間を減算し、0以下になったらGameOver関数が呼ばれる。 public class GameRu…

敵のランダム出現

コルーチンを使い、最大出現数を設定。 2体発生させるオブジェクトを作成したとしたら、 そのオブジェクトを発生させたい場所に配置する。 マップ全体を把握して、配置させる方法もあるのかもしれませんが、 調べてみた所、これが簡単そうです。 public clas…

コルーチン

・コルーチン 関数の途中で中断、再開できる仕組み。 yieldというキーワードで、中断させることができ、再開するときは yieldの後から実行される。 ・関数の戻り値はIEnumerator型である必要がある。 void update(){ "表示①" //3秒待つ "表示②" //1フレーム…

アイテム生成③

・敵を倒した時に、敵がアイテムを落とすようにする。 // 複数のアイテムを入れれるように配列 public GameObject[] dropItemPrefab; ・アイテムを生成する関数 void dropItem() { if (dropItemPrefab.Length == 0) { return; } GameObject dropItem = dropI…

アイテム生成②

・プレイヤーでのアイテム管理 攻撃強化アイテムは取得してから5秒間効果が続きますが、 回復アイテムは取った時に効果を発揮します。 public void GetItem(DropItem.ItemKind itemKind) { switch (itemKind) { case DropItem.ItemKind.Attack: powerBoostTi…

アイテム生成①

・モデルデータとテクスチャデータを用意 ・モデルにテクスチャを貼り付ける ・作りたいアイテムのプレハブを用意する ・アイテムを区別するために、種類を追加。 public class DropItem : MonoBehaviour { public enum ItemKind { Attack, Heal, }; public …

AI関連 Colliderに入ったプレイヤーを攻撃対象にする。

Sphere Colliderを追加したオブジェクトへスクリプトを追加します。 public class SearchArea : MonoBehaviour { EnemyCtrl enemyCtrl; void Start() { // EnemyCtrlをキャッシュする enemyCtrl = transform.root.GetComponent<EnemyCtrl>(); } void OnTriggerStay( Col</enemyctrl>…

AI関連 攻撃対象を設定する

敵を管理しているスクリプトに関数を用意します。 // 攻撃対象を設定する public void SetAttackTarget(Transform target) { attackTarget = target; } ・攻撃処理 攻撃対象を追跡するアルゴリズムです。攻撃するには攻撃が当たる位置まで移動しなければなり…

AI関連 索敵範囲コライダ

ゲームオブジェクトを作成し、physicsから「SphereCollider」を選択。 @は好きなオブジェクトと親子関係にし、 Radiusで範囲を設定する。 もちろん大きければ大きいほど敵が、追ってきます。

AIスクリプト メモ②

・移動先の設定 Random.insideUnitCircle関数は、半径1の円の中の点をランダムに返します。 その値に任意の値を掛けることで、任意にランダムな位置を簡単に取得できます。 Vector2 randomValue = Random.insideUnitCircle * walkRange; basePositionにrand…

AIスクリプト メモ①

敵のAIを実装。 ・待機時間を決める float waitBaseTime = 2.0f; ・残り待機時間を用意 float waitTime; ・移動範囲を決める float walkRange = 5.0f; ・初期位置を保存する Vector3 basePosition; Start関数で初期位置を保存しておき、残り待機時間にwaiteB…

攻撃判定 AttackArea

AttackArea using UnityEngine;using System.Collections;public class AttackArea : MonoBehaviour { CharacterStatus status; void Start() { status = transform.root.GetComponent<CharacterStatus>(); } public class AttackInfo { public int attackPower; // この攻撃</characterstatus>…

カメラを追従させる メモ2

・カメラをターゲットに向ける//LookAt関数 ・カメラを回転させる 水平回転角度 horaizon 上下回転角度 vertical カメラと注視点間の距離 distance この3つの値が必要になる Vector3 relativePos = Quaternion.Euler (verticalAngle,horizontalAngle,0) * ne…

カメラを追従させる

カメラの位置=追従対象の位置 + ずらし幅 追従する対象の位置 : lookTarget.position//追従対象 追従対象の位置からの補正 : offset//補正値 追従する位置 = lookTarget.position + offset 追従する位置 = lookPosition//注視点 Update関数内で追従処理で行…

Unity Ray

PhysicsクラスのRayCast関数を使うと光線を飛ばし、 光線が当たった物体やその位置を調べることができます。 RayCastを使ってユーザーがクリックした画面上の位置からゲーム世界の位置を求める。 例として原点の10m上空から下に向かうRay Ray ray = new Ray…

Character Controllerメモ3

1 : 設置しているかどうか(接地していなければ6へ 2 : 目的地の方向を求める 3 : 到着判定 4: 移動速度ベクトルを求める 5 : 向きの処理 6 : 重力加速処理 7 : CharacterControllerでの移動処理 凹凸処理は CharacterControllerのMove関数を使う。

Character Controllerメモ2

目的地の座標変数を用意する。 目的地に向かって移動させるには、目的地方向1フレーム分の移動量を求めて、 現在地に加算すればいい。 1フレーム分の移動量は方向と速度さえ分かればよい。//方向×速度×1フレーム時間 よって、速度と方向を掛け合わせたベ…

Character Controllerメモ

Inspector/Add/Ch...でキャクターを移動させるのに特化したコンポーネントを使えます。 Slope LImit : 登れる坂の勾配 Step Offset : 乗り越えられる段差の高さ Skin Width : 他の衝突物と接触した際にめり込んでも構わない幅(10%目安か Center : 衝突範囲…

Unity 基礎メモ

Vector3 : 3次元ベクトルを表すクラス transform.position = new Vector3(5.0f,0.0f,0.0f);//移動する Quaternion(クォータニオン) : 四次元数 Euler(オイラー) : メソッド X,Y,Z軸のオイラー角 transform.rotation = Quaternion.Euler(0,0,45);//回転する U…

Unity エラー

NullReferenceException: Object reference not set to an instance of an object原因は、プログラムを適用しているGameObjectに、参照先のクラス(JavaScript, C#ファイル)を適用していない。 GetComponentを使用時によく出る。

背景スクロール

public class Background : MonoBehaviour{ // スクロールするスピード public float speed = 0.1f; void Update () { // 時間によってYの値が0から1に変化していく。1になったら0に戻り、繰り返す。 float y = Mathf.Repeat (Time.time * speed, 1); // Yの…

Unity Shooting Class

Rigidbody2Dクラス2Dのための物理挙動を行うのに必要なクラスです。重力の影響や、物体の移動はこのクラスを介して行われます。 Inputクラス キーボードやJoyStickなどコントローラーの全ての入力を処理するためのクラスです。モバイルなどでは加速度センサ…