【Unityめも】スクリプトからTextの表示
どうもです。
Unity5を使ってるものの、使ってる参考書はUnity4なもんだから色々変わってるところについていけず、いつも調べる羽目に。
んで、いちいち調べるのめんどいから、自分用にまとめます。
Unity4ならguiTextureってのがあって
guiText.text = "Time: " + timeRemaining;
なんてので、スクリプト内でguitext作って「Time:残り時間」みたいな表示ができたんですけども、
どうもUnity5からはguiTextがなくなって
Textやら画像やらは "Canvas"なるオブジェクトにおくよう。
HierarchyビューでTextを作っておいて、スクリプトをつくる
public Text timetext; puclic void start(){ timeText.text = "time: 0"; }
てな感じでTextをpublic宣言しておき、Inspectorビューでスクリプトに作っておいたTextをひっつける。
以上、おしまい。
最近ちょっとだけ慣れてきたきがするよ。気のせいかも。
くわしいテキスト表示はこちらを参照hiyotama.hatenablog.com
追記
using UnityEngine.UI;
これ忘れたいかん
本命試験が一週間後にせまったって話
こんばんわ。就活生さよねです。
【Unityつまづき】Triggerのなぞ
こんにちは。
前回、当たり判定のプログラムを作ってて、IsTriggerのチェック外したらうまくいったけどなんでって話。
詳しくはこちら→【Unityつまずき】 当たり判定がうまくいかない - 5丁目らへんのさよねん家
答えはスクリプトにございました。
前回の当たり判定スクリプトがこちら
void OnCollisionEnter2D(Collision2D collision) { //みかんだったらスコアを加算する if (collision.gameObject.tag == "mikan") { //スコア加算 score += 100; //スコアの更新 ScoreText.text = "Sco: " + score.ToString(); } Destroy(collision.gameObject); }
このOnCollisionEnter~ってところで接触したところをチェックしてたわけです。
んで、ゲームとして当たり判定をさせたいけど物理的な衝突反応はしてほしくないってときにTriggerを使うわけですけれども、
このTrigerを使った接触のときは、通常の接触とは別のイベントをつかわないかんらしい。
てことでスクリプトを訂正しました。
void OnTriggerEnter2D(Collider2D col) { //みかんだったらスコアを加算する if (col.gameObject.tag == "mikan") { //スコア加算 score += 100; //スコアの更新 ScoreText.text = "Sco: " + score.ToString(); } Destroy(col.gameObject); //みかん消去 }
OnCollisionEnter~のところがOnTriggerEnter~に変わりまして引数もCollisionからColliderに変わります。
んで、IsTriggerにチェックをいれる
無事動きました。
働きは同じでも、トリガーを使った時のイベントとトリガーを使わないときのイベントは違うってことですね。
初歩的なことなんですがきちんと把握できてなかったためごっちゃになっていました…
【Unityつまずき】 当たり判定がうまくいかない
さっそくつまずいたのでメモしておこうと思います。
今卒論で制作しているゲームなんですが、内容を簡単にいうと、
長与町のイメージキャラクターであるミックン(真ん中の帽子かぶってるやつ)が、みかんやらオリーブやらの特産物を拾ってっくてなものです。
ゲーム内で使用するイラストは後々自作するとして、とりあえずはプログラム作ってみようって段階です。みかんは「素材屋小秋」っていうサイトから拝借しました。
http://www.sozaiyakoaki.com/win/mikan/)
さて、みかんがミックンにあたったら得点が入るよ~ってなプログラムをつくったわけですが、なぜか上手くいかない。
ちなみにスクリプトはこんな感じ
>||
//アタリ判定
void OnCollisionEnter2D(Collision2D collision)
{
//みかんだったらスコアを加算する
if (collision.gameObject.tag == "mikan")
{
//スコア加算
score += 100;
//スコアの更新
ScoreText.text = "Sco: " + score.ToString();
}
Destroy(collision.gameObject); //みかん消去
}
||<
参考書とかサイトぐりぐり~とみて
あ、コライダーもRigidbodyもなんもつけてねぇ
てな初歩的なミスに気づき、Collider2DとRigidbody2Dを追加。どちらもあたり判定には必須ですね。詳しくは下記参照。
さて、これでもう大丈夫…
と思いきや全然スコアが加算されぬぞ。なんで?どこがおかしい??
まとも参考書やサイトをぐるぐるまわり、ときにはチュートリアルを1からしてみたりしながら二日ほど。本気でつんだなと思ってた。
そしてなんとな~く
IsTriggerのチェックを外してみたらうまくいった
んんん?でもまって、トリガーって当たり判定では必須なんでねぇの?
衝突してもそのまま通過するように設定するのがトリガーなんでねえの??
でもトリガーのチェックを外すと当たり判定はうまく言ってる模様。
ちゃんとみかんも消えました。
????????
原因は謎なんだがとりあえずプログラムは動いたので今日は帰ろうと思います…