2015年11月6日金曜日

当たり判定を実装したい時にレイヤーチェックが役立つかも?

昼頃になにかメモ程度に書こうと思っていたのにネタが頭から飛んでしまいました。

今回は大雑把に当たり判定の実装の話を。
当たり判定を作るときにOnCollisionEnterメソッドでオブジェクト名を指定してもいいけれど、
これだとInstantiateした場合、オブジェクト名に(clone)が付いてしまう。
こうなると名前が変更されて機能しなくなってしまう。

しかし、OnTriggerEnterメソッドを用いると上記で発生する問題は解決できる。
更には少し手を加えるだけで物体に当たった時の物理挙動も無くすことができる。
(マリオがコインを取った時を想像してもらえると。)

睡魔に抗えないので今回はここまで(意志が弱い
次回は実際に簡単なコードでも書けたらなと。

2015年11月1日日曜日

MonoBehaviourを継承している場合はAddComponentで

寒くなって参りました。風邪などには注意して毎日を過ごしていきましょう。

というわけで本題に。シーンを実行するとこの警告文が毎回出てきて鬱陶しいと感じていた。
以下がそのエラー文。

「You are trying to create a MonoBehaviour using the 'new' keyword.  This is not allowed.  MonoBehaviours can only be added using AddComponent().  Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
LevelControl:.ctor()
MapCreator:Start() (at Assets/Scripts/Game/MapCreator.cs:40)」

何を言われているかと言うと、
MonoBehaviourを継承しているところではnewではなくAddComponentしてねということでした。

private MapCreator MC = null;

MC = new MapCreator(); ← これはダメ
MC = gameObject.AddComponent<MapCreator>(); ← こっちが正解

2015年10月16日金曜日

csv形式でデータを出力しようとして出てきたエラー

とても初歩的なエラーなのに解決するのに2,30分悩まされたので一応メモ…。

エラー内容は下記の文章から始まる↓
IOException: Sharing violation on path

エラー文がかなり長くて難解さを際立たせて来るからよろしくない(その前に気付こう
これの原因はとてもシンプルで、「データを書き込もうとしているファイルが開いてるから
書き込めないよ」って言われているだけ。開いているファイルを閉じてやればちゃんと実行された。


2015年10月14日水曜日

Unity5で実行画面が暗くなった時の対処法

Unityでゲームを作成していて、ゲームをプレイするためのシーンと
タイトルのシーンを分けていて困ったので…。どうやらUnity5での不具合?らしい。

参考にした記事があるのでリンクを貼っておきます。

Unity実行画面が急に暗くなる
http://acekblog.sakuraweb.com/wp/archives/123


UnityのWindowタブからLightingを選択すると上の画像のようなダイアログが開きます。
右下にあるAutoのチェックボックスを外してからBuildボタンを押せばOKっぽいです。
これをシーン毎に行ったらシーン遷移しても画面が暗くなりませんでした。