###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
unityで2Dのアクションゲームを作っています。画面外にいる敵を生成する場合、画面内にいたら、敵を出現させるシステムを作っています。
また、背景はスクロールせずに、ループして、敵と同様、画面内にいたら、背景を出現させるシステムも考慮しています。調べてみましたが、なかなか解決策が見当たらないので、よろしくおねがいします。
(背景はx座標間の幅17を使用し、地面も同様を使っています。)
###発生している問題・エラーメッセージ
画面外で生成した場合、地上の敵はゲーム開始時に下に落ちる。
エラーメッセージ
###該当のソースコード
//ゲーム開始時に出現
using UnityEngine;
using System.Collections;
public class MainCamera : MonoBehaviour {
public GameObject People; //敵のプレハブ // Use this for initialization void Start () { for (int i = 0; i < 30; i++) { CreatePeople(); } } // Update is called once per frame void Update () { } void CreatePeople() { Instantiate(People, new Vector2(Random.Range(5.0f, 100f),0), People.transform.rotation); //敵の配置生成(x座標5~100の間にランダムに生成) }
}
//敵のプログラム
using UnityEngine;
using System.Collections;
public class People : MonoBehaviour {
Rigidbody2D rb; public int moveSpeed = 1; private Animator anim; private bool flg = false; void Start () { anim = GetComponent<Animator>(); rb = GetComponent<Rigidbody2D>(); } void Update () { if(flg) { var v = new Vector2(0.04f, rb.velocity.y); //敵が動く transform.Translate(v); } } void RedirectedOnTriggerStay2D(Collider2D col) { if (flg == false) { if (col.gameObject.tag == "Player") { anim.SetBool("Walk", true); Debug.Log(anim.GetBool("Walk")); flg = true; } } }
}
###試したこと
OnBecameVisible()を使用したが、初めから画面外に生成される敵には適応されない。
最終手段として、Gravity scaleを0とし、落ちないようにしたが何体も生成されると、ゲームが重くなる可能性がある。
###補足情報(言語/FW/ツール等のバージョンなど)
C#を使用
あなたの回答
tips
プレビュー