【Unity】Prefabからゲームオブジェクトを自動生成する方法
1.GameObjectを作成し、以下スクリプトをアタッチする。
public class Emitter : MonoBehaviour { // Enemyプレハブを格納する public GameObject enemyOrigin; public void createEnemy() { // Enemyを作成する GameObject enemy = (GameObject)Instantiate(enemyOrigin, transform.position, Quaternion.identity); } }
2.上記のcreateEnemy()メソッドを、以下スクリプトから呼び出す。
public class GameManager : MonoBehaviour { // const int RecoSeconds = 10; // Time public Text time; public GameObject emitter; private Emitter emitterScript; // 秒数 private int seconds = 0; // Use this for initialization void Start () { emitterScript = emitter.GetComponent<Emitter>(); } // Update is called once per frame void Update () { // 秒数の表示 time.text = "TIME:" + seconds; // secondsが0秒のときにカウントスタート if(seconds == 0) { // コルーチンのスタート StartCoroutine(CountTime()); } } IEnumerator CountTime() { seconds = RecoSeconds; // Enemyの作成 emitterScript.createEnemy(); while (seconds > 0) { // 1秒待機 yield return new WaitForSeconds(1.0f); seconds--; } } }
【Unity】秒数をカウントし、UIに表示する方法
1.GameObjectを作成し、以下のスクリプトをアタッチする
const int RecoSeconds = 10; // Textオブジェクト public Text time; private int seconds = 0; // Update is called once per frame void Update () { // UI time.text = "TIME:" + seconds; // secondsが0秒のときにカウントスタート if(seconds == 0) { // コルーチンのスタート StartCoroutine(CountTime()); } } IEnumerator CountTime() { seconds = RecoSeconds; while(seconds > 0) { // 1秒待機 yield return new WaitForSeconds(1.0f); seconds--; } }
2つめのiOSアプリをリリースしようとしたら、4.3リジェクトを食らってしまった話
何より数が大事だと思い、クオリティーは気にせずiOSアプリをガンガンリリースしていこうと思い、さっそく2つめのiOSアプリを審査に出したところ、4.3 Design: Spamなるリジェクトを食らいました。
で、この「4.3 Design: Spam」の内容を調べてみたところ、かなり厄介な問題で。。
4.3 スパム
同一のAppに対して複数のバンドルIDを作成しないでください。特定の場所、スポーツチーム、大学などに向けた異なるバージョンが存在するAppの場合は、単一のAppを提出し、異なるバージョンはApp内課金で提供する方法を検討してください。また、すでに飽和状態のカテゴリにAppを追加することは避けてください。App Storeには、おなら、げっぷ、懐中電灯、カーマ・スートラといったAppが多数あります。App Storeでスパム行為をすると、Developer Programから除名される可能性があります。
同じようなアプリは出さないでってことらしいです。
今回、審査に出したアプリは、たしかに1つめにリリースしたアプリと見た目酷似してる。って、Unityの3Dオブジェクトをそのまま使ってるだけだし。。
けど、これだと毎回見た目はかなり変えないといけないし、同じようなジャンルのゲームは作れないってことも言える。いや、これはゲーム開発初心者にとって、かなりハードルが高いような。
わざわざ、iOSアプリを作るためだけにdeveloper登録料まで払わせておいて。。もうね、絶望しかないです。うーん、これからどうしよう。。
【Unity】ゲームオブジェクトを自動で動かし、オブジェクトに当たると反射する方法
動かしたいオブジェクトに、Physics Materialをアタッチする。
以下スクリプトをアタッチする。
// 移動速度 public float speed = 5.0f; // Rigidbodyコンポーネント Rigidbody rb; // Use this for initialization void Start () { // Rigidbodyコンポーネント取得 rb = GetComponent<Rigidbody>(); //右上にボールを動かす rb.AddForce((transform.up + transform.right) * speed, ForceMode.VelocityChange); }
【Unity】衝突時、ゲームオブジェクトを削除する方法
private void OnTriggerEnter(Collider other) { // 地面に衝突したら自オブジェクト削除 if(other.gameObject.tag == "Ground") { Destroy(gameObject); // Playerと衝突したら、自オブジェクトとPlayerオブジェクトを削除 } else if (other.gameObject.tag == "Player") { Destroy(gameObject); Destroy(other.gameObject); } }
【Unity】Rigidbodyをアタッチしても、重力の変化を受けなくする方法
Use Gravityのチェックを外す。