進捗
- 対地攻撃が可能
- 地上敵の上では照準が赤くなる
- 地上敵の爆破後はクレータになる
- バキュラ追加(3面に配置)
- ザカート追加
- 4面にアンドアジェネシス追加(まだ攻撃はできない)
- キャラチップを16x16に変更
残項目
ブラスター
地上攻撃のブラスターは、弾が照準まで届く前はBoxCollider2Dのenableをfalseにして、triggerを無効にしている。照準まで届いたらenableをtrueにして、地上敵とのtriggerを有効にして、破壊している。
void Update () { min = Camera.main.ViewportToWorldPoint (new Vector2 (0, 0)); max = Camera.main.ViewportToWorldPoint (new Vector2 (1, 1)); if(transform.position.y > max.y || transform.position.y < min.y) { GetComponent<BoxCollider2D>().enabled=false; Destroy(gameObject); } else if( transform.position.y>startPos.y+3.4f ) { GetComponent<BoxCollider2D>().enabled=false; Destroy(gameObject); } else if( transform.position.y>=startPos.y+2.6f ) { GetComponent<BoxCollider2D>().enabled=true; float xpos = transform.position.x+0f * speed*Time.deltaTime; float ypos = transform.position.y+1f * speed*Time.deltaTime; Vector3 playerPos = new Vector3 (xpos, ypos,0f); transform.position = playerPos; } else { GetComponent<BoxCollider2D>().enabled=false; float xpos = transform.position.x+0f * speed*Time.deltaTime; float ypos = transform.position.y+1f * speed*Time.deltaTime; Vector3 playerPos = new Vector3 (xpos, ypos,0f); transform.position = playerPos; } if(sr && (animStart+(int)animIndex)<=animEnd) { sr.sprite = GM.sp2[animStart+(int)animIndex]; animIndex+=2f*speed*Time.deltaTime; } }
照準は、地上敵とonTriggerが起きている間は赤くするが、FixedUpdateで毎回元に戻している。
本来は、OnTriggerExit2Dで、照準を戻せばいいのだけど、地上敵を攻撃している場合、破壊してDestroyするのでOnTriggerExitが発生しない場面があるので、こういう仕様にしている。
Unityの実行順序は、
FixedUpdate → Physics → OnMouse → Update → LastUpdate
となるので、FixedUpdateでいったん照準を戻しても、Physicsで、OnTriggerStayが発生していれば、再度赤を点灯させることができる。
アンドアジェネシス(4面)