Unity5 メモ8
オブジェクトの親のオブジェクトについたスクリプトの関数を呼ぶ
this.gameObject.GetComponentInParent<EnemyController>().EnemyDead();
オブジェクトのサイズを取得
renderer.bounds.size
orcollider.bounds.size
ormesh.bounds.size
敵をインスタンス化したときにプレイヤーと衝突していたら離す処理
モンストではエリアが切り替わったときプレイヤーの位置を保持するため敵の出現位置とかぶる場合があり、
敵出現時にぶつからないように引き離される。
この処理は、オブジェクトの形状を円と仮定すると、以下のようにできる。
float enemyRadius = this.GetComponentInChildren<Renderer>().bounds.size.x / 2; float attackerRadius = coll.GetComponentInChildren<Renderer>().bounds.size.x / 2; Vector3 diff = coll.transform.position - this.transform.position; float length = enemyRadius + attackerRadius - diff.magnitude + 0.2f; // margin diff.Normalize(); coll.transform.position += diff * length;
プロジェクト全体の名前を変える
プロジェクトのフォルダをリネームするだけで良い。
プロジェクトフォルダ直下の.slnファイルなど、プロジェクトの名前がついているファイルはUnityが自動的に生成するので古いものは削除して問題ない。敵から味方へのダメージの連絡手段
PlayerController > Player
EnemyController > Enemy > EnemyAttack
のような親子関係で、4人で1本の体力ゲージなのでPlayerControllerで体力情報を持っている。
ここで、敵の攻撃がプレイヤーに当たったとき、つまり
EnemyAttack.csのOnTriggerEnter2D()
で引数にキャラクターが渡されているとき、以下のようにすると操作できる。
coll.GetComponentInParent<AttackerController>().GainHP(-50);