rigidbody2D.velocity = ・・・(任意の文字列) |
GetComponent<Rigidbody2D>().velocity = ・・・(任意の文字列) |
renderer.sharedMaterial.SetTextureOffset ("_MainTex", offset); |
GetComponent<Renderer>().sharedMaterial.SetTextureOffset ("_MainTex", offset); |
// ショット音を鳴らす audio.Play(); |
// ショット音を鳴らす GetComponent<AudioSource>().Play(); |
using UnityEngine; using System.Collections; public class Enemy : MonoBehaviour { public int hp = 1; // ヒットポイント Spaceship spaceship; // Spaceshipコンポーネント IEnumerator Start () { // Spaceshipコンポーネントを取得 spaceship = GetComponent<Spaceship> (); // ローカル座標のY軸のマイナス方向に移動する Move (transform.up * -1); // canShotがfalseの場合、ここでコルーチンを終了させる if (spaceship.canShot == false) { yield break; } while (true) { // 子要素を全て取得する for (int i = 0; i < transform.childCount; i++) { Transform shotPosition = transform.GetChild (i); // ShotPositionの位置/角度で弾を撃つ spaceship.Shot (shotPosition); } // shotDelay秒待つ yield return new WaitForSeconds (spaceship.shotDelay); } } // 機体の移動 public void Move (Vector2 direction) { GetComponent<Rigidbody2D>().velocity = direction * spaceship.speed; } void OnTriggerEnter2D (Collider2D c) { // レイヤー名を取得 string layerName = LayerMask.LayerToName (c.gameObject.layer); // レイヤー名がBullet (Player)以外の時は何も行わない if (layerName != "Bullet (Player)") return; // PlayerBulletのTransformを取得 Transform playerBulletTransform = c.transform.parent; // Bulletコンポーネントを取得 Bullet bullet = playerBulletTransform.GetComponent<Bullet>(); // ヒットポイントを減らす hp = hp - bullet.power; Debug.Log("hp -> " + hp); // 弾の削除 Destroy(c.gameObject); // ヒットポイントが0以下であれば if(hp <= 0 ) { spaceship.Explosion (); // 爆発 Destroy (gameObject); // エネミーの削除 } } } |
using UnityEngine; public class Bullet : MonoBehaviour { public int speed = 10; // 弾の移動スピード public float lifeTime = 1; // ゲームオブジェクト生成から削除するまでの時間 public int power = 1; // 攻撃力 void Start () { // ローカル座標のY軸方向に移動する GetComponent<Rigidbody2D>().velocity = transform.up.normalized * speed; // lifeTime秒後に削除 Destroy (gameObject, lifeTime); } } |
// レイヤー名がBullet (Enemy)またはEnemyの場合は爆発 /*if( layerName == "Bullet (Enemy)" || layerName == "Enemy") { // Managerコンポーネントをシーン内から探して取得し、GameOverメソッドを呼び出す FindObjectOfType<Manager>().GameOver(); // 爆発する spaceship.Explosion(); // プレイヤーを削除 Destroy (gameObject); } */ |
Color.r 1 Color.g 0 Color.b 0.6 Color.a 1 |
using UnityEngine; [RequireComponent(typeof(Rigidbody2D), typeof(Animator))] public class Spaceship : MonoBehaviour { public float speed; // 移動スピード public float shotDelay; // 弾を撃つ間隔 public GameObject bullet; // 弾のPrefab public bool canShot; // 弾を撃つかどうか public GameObject explosion;// 爆発のPrefab private Animator animator; // アニメーターコンポーネント void Start () { // アニメーターコンポーネントを取得 animator = GetComponent<Animator> (); } // 爆発の作成 public void Explosion () { Instantiate (explosion, transform.position, transform.rotation); } // 弾の作成 public void Shot (Transform origin) { Instantiate (bullet, origin.position, origin.rotation); } // アニメーターコンポーネントの取得 public Animator GetAnimator() { return animator; } } |
using UnityEngine; using System.Collections; public class Enemy : MonoBehaviour { public int hp = 1; // ヒットポイント Spaceship spaceship; // Spaceshipコンポーネント IEnumerator Start () { // Spaceshipコンポーネントを取得 spaceship = GetComponent<Spaceship> (); // ローカル座標のY軸のマイナス方向に移動する Move (transform.up * -1); // canShotがfalseの場合、ここでコルーチンを終了させる if (spaceship.canShot == false) { yield break; } while (true) { // 子要素を全て取得する for (int i = 0; i < transform.childCount; i++) { Transform shotPosition = transform.GetChild (i); // ShotPositionの位置/角度で弾を撃つ spaceship.Shot (shotPosition); } // shotDelay秒待つ yield return new WaitForSeconds (spaceship.shotDelay); } } // 機体の移動 public void Move (Vector2 direction) { GetComponent<Rigidbody2D>().velocity = direction * spaceship.speed; } void OnTriggerEnter2D (Collider2D c) { // レイヤー名を取得 string layerName = LayerMask.LayerToName (c.gameObject.layer); // レイヤー名がBullet (Player)以外の時は何も行わない if (layerName != "Bullet (Player)") return; // PlayerBulletのTransformを取得 Transform playerBulletTransform = c.transform.parent; // Bulletコンポーネントを取得 Bullet bullet = playerBulletTransform.GetComponent<Bullet>(); // ヒットポイントを減らす hp = hp - bullet.power; Debug.Log("hp -> " + hp); // 弾の削除 Destroy(c.gameObject); // ヒットポイントが0以下であれば if(hp <= 0 ) { // 爆発 spaceship.Explosion (); // エネミーの削除 Destroy (gameObject); } else { spaceship.GetAnimator().SetTrigger("Damage"); } } } |
[Next Chapter ↓] Shooting-12
[Previous Chapter ↑] Shooting-10