質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.54%

  • C#

    8844questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

初めに画面外で生成した敵(オブジェクト)が、画面内に入ると出現する方法

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 1,050

yanachan

score 2

前提・実現したいこと

ここに質問したいことを詳細に書いてください
(例)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#を使用

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • C#

    8844questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。