前提・実現したいこと
Unityにてゲームを作っています。
プレイ時にある条件を満たした際、
「お知らせA」「お知らせB」
のような文章が、画面上のパネルにお知らせテキストとして、
右から自動で流れてきて、左画面外へ消えるように
したいと思っています。
例えば、電光掲示板のような感じです。
条件はAとBで2種類あり、したがって流したいテキストもABの2種類です。
下記はゲーム画面のスクショ画像で、文字の流れるパネル部分です。
発生している問題・エラーメッセージ
現在、右から左へと、テキストを動かすこと自体は成功しています。
いずれも以下の問題が発生しています。
・2回目に同じ条件を達成し、再び同じテキストが流れると、なぜか初回より速度が速くなってしまうこと
(同じ速度で流れてほしいです)
・AとBの条件を同時に満たした際、テキストが重なるようにして、かぶって出てきてしまうこと(下記画像参照ください)
(重ならずに流れてほしいです)
以上が解決できず、困っています。
該当のソースコード
public GameObject oshiraseprefabA;
public GameObject oshiraseprefabB;
private GameObject objA;
private GameObject objB;
・・・中略・・・
void Update()
{
if(gamemanager.oshirase == 1) //条件A
{
obj = Instantiate(oshiraseprefab, new Vector3(0f, 0f,0f), Quaternion.identity);
obj.transform.SetParent(this.transform);
obj.transform.position = new Vector3(10f, -4f);
MoveTextPanelA();
}
if(gamemanager.oshirase == 2) //条件B
{
objB = Instantiate(oshiraseprefabB, new Vector3(0f, 0f,0f), Quaternion.identity);
objB.transform.SetParent(this.transform);
objB.transform.position = new Vector3(10f, -4f);
MoveTextPanelB();
}
・・・中略・・・
void MoveTextPanelA()
{
if(obj == null)
{
return;
}
if (obj.transform.position.x >= limitPosition)
{
obj.transform.position = new Vector2(obj.transform.position.x - textScrollSpeed * Time.deltaTime, obj.transform.position.y);
}
}
void MoveTextPanelB()
{
if (objB == null)
{
return;
}
if (objB.transform.position.x >= limitPosition)
{
objB.transform.position = new Vector2(objB.transform.position.x - textScrollSpeed * Time.deltaTime, objB.transform.position.y);
}
}
試したこと
条件を満たした際に、動くテキストですが、
1.テキストのプレハブをそれぞれ作り、動かす
2.最初からテキストA,Bのオブジェクトを画面外に配置しておいて、動かす
などの方法を試しました。
上記はプレハブを生み出して動かしているパターンです。
いずれにしても、上記の問題は発生します。
Updateメソッドでは、プレハブのX座標を引き算していくことで動かしています。
プレハブ自体には、画面外の座標に達したらDestroyする別のスクリプトをつけています。
テキストは同じ場所から流れるので、条件をほぼ同時に満たした際など、
何も処理をしなければ当然かぶってしまいます。が、
どこをどう直せばうまくいくのかわかりません。
また、流れる速度が速くなる問題については、上記のMoveTextPanelの
計算方法がまずいのではと思っていますが、
良い方法がわからず、解決できていません。
伝わりにくいかもしれませんが、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/30 06:18 編集
2021/06/30 16:11 編集
2021/07/01 02:51