「 メモ 」一覧

【Unity3D】error CS1010: Newline in constant

※ここの管理人はWindowsでUnityやってます。

	void Awake()
	{
        Debug.Log("単体");
	}

突然変なエラーが出だしたので色々やってみた結果、たったこれだけのコードでも出る事が判明。

んーこれはどうみても文字コード周り。ちなみにこの時の文字コードは UTF-8 のBOMなし (CR+LF)

 

ということで色々試してみた結果、

UTF-8 BOMあり (CR+LF)

に変更した所エラーが消えました。めでたしめでたし。

 

ちなみに何故今頃こんなエラーが出てきたかと言いますと、今までUTF-16(Unicode little endian)でコード書いていたのですが、GitHubでソースコードがバイナリ扱いになりdiff出来ないという状況になった為

「じゃあUTF-8でやってみようか。BOMは・・・とりあえず無しで」

という話が最近あった為です(‘`

 

 

文字コードいちいち変えるの面倒だからスクリプトのテンプレート触るか・・・と思ったけど

どうやらUnity4でもテンプレートの文字コード無視して強制的にSJISにしてしまう事が判明。ああめんどくさい(‘A` ヴァー


【メモ】OnCollisionEnterとTransform.parent

何か参考にしてもらえそうな簡単な物…という事でメダルプッシャーをささっと作ってみてる今日この頃。

しかしプッシャーの上に乗ったコインがプッシャーの動きに合わせて動いてくれないので以下のようなコードを書いてみた。

void Update () 
{
    // 落ちたコインを消す
    if (this.transform.position.y < -10) Destroy(this.gameObject);
}

void OnCollisionEnter(Collision c)
{
    if (this.transform.position.y < 6) // 2.3<Y<6の時、床に合わせて動いてもらう
    {
        if (this.transform.position.y < 2.3f)
        {
            this.transform.parent = null;
        }
        else
        {
            // parentに動く床をセット。this.ParentPusherは動く床(GameObject)
            this.transform.parent = this.ParentPusher.transform;
        }
    }
}

OnCollisionEnterを用いているのは、コインが投入されてからプッシャーの上に乗る前に
コインが床に合わせて動かないようにするため。

 

で、これを実行すると…遅い!

150枚くらいで一気に処理落ちを始めました。。

 

OnCollisionEnterがダメなんかなあという事で以下のコードを実行

void Update () 
{
    // 落ちたコインを消す
    if (this.transform.position.y < -10) Destroy(this.gameObject);
}

void OnCollisionEnter(Collision c)
{
}

実行結果…ほんの少し良くなった気がするが相変わらず遅い!

というか、これだけでも遅くなる事を知りませんでした。めらんは50の経験値を得た。

 

 

それはさておきOnCollisionEnterが使えないので、以下のように騙しを入れることに・・・

void Update()
{
    if (this.transform.position.y < 6)
    {
        if (this.transform.position.y < 2.3f)
        {
            if (this.transform.position.y < -10)
            {
                // 落ちたコインを消す
                Destroy(this.gameObject);
            }
            else
            {
                this.transform.parent = null;
            }
        }
        else
        {
            // parentに動く床をセット。this.ParentPusherは動く床(GameObject)
            this.transform.parent = this.ParentPusher.transform;
        }
    }
}

ちょっと書き方がアレかも知れませんが、なんのことはない、Updateに処理を移動しただけです。

空中でコインが移動してしまいますが、実際にやってみると意外と気にならなかったのでこれでよし。

 

 

で、実行結果・・・多少改善されたけど250枚くらいで一気に処理落ち・・・orz

 

 

 

・・・まあ思いつく事はやろうという事で以下のように修正して実行。

void Update()
{
    if (this.transform.position.y < 6)
    {
        if (this.transform.position.y < 2.3f)
        {
            if (this.transform.position.y < -10)
            {
                // 落ちたコインを消す
                Destroy(this.gameObject);
            }
            else
            {
                if (this.transform.parent != null) this.transform.parent = null;
            }
        }
        else
        {
            // parentに動く床をセット。this.ParentPusherは動く床(GameObject)
            if (this.transform.parent == null) this.transform.parent = this.ParentPusher.transform;
        }
    }
}

parentを設定する前に、ifで確認するようにしました。

 

で、実行結果・・・約650枚投入しても大丈夫!キタ━(゚∀゚)━!

※何故650かと言いますと、今の仕様上コインをガンガン投入しても溜まるのは650枚ほどになる為デス。

 

というわけで、

・OnCollisionEnterなどはやはり重い。メソッドを記述しただけで重い。

・Transform.parentに何かを代入するのは意外と時間を食う。

という結論。そんなメモでした。

 

なお、null以外の代入(↑の20行目)に結構な時間がかかるようですが、
nullを代入(↑の14行目)する時も少し時間がかかるようです。(nullが入ってる時にnullを入れる場合も同様)

 

それと余談ですがこれのコインは1枚につきBoxCollider1個しかついてません。
最初はCylinderに合わせて10個付けてたりしましたが…重い以前に滑りが悪い…
(2個しか接地しないようにしてもやはり滑りが悪かった)
やっぱり物量ある方がきっと楽しいですよね。ゲーセン行きたくなってきた・・・!


近状まとめ(5/26)

 

最近やった事とか、気になる事とか。

 

○UnityのAssetStoreでセールやってるらしい
UNITY: Asset Store
http://unity3d.com/unity/asset-store/

55%offになってたNGUIを買ってみたよ!
期間分からないからお早めに?

 

 

 

○有名なDAWが5/31まで・・・
Ableton Live Lite 8の無償配布は5月末までだ!! – 藤本健の“DTMステーション”
http://www.dtmstation.com/archives/51789623.html

 

 

 

○SAN値とは
SAN値ってナニよ? 3分でわかるニャル子さんの「クトゥルフ神話」入門 : Kotaku JAPAN
http://www.kotaku.jp/2012/05/cthulhu_kaisetsu_uu_nyaa.html

 

 

 

○[ACV]UAV
ARMORED CORE @ ウィキ – SHOULDER UNIT UAV Ⅴ
http://www21.atwiki.jp/armoredcoreforever/pages/402.html

昨日2時間くらい触ってみたけど「やっぱりこれ何に使うの」という結論に
壁越しにロックオンって言ってもヘリとか砲台はダメだったし(対ACは検証してません)

 

ちなみにUAVを装備していると・・・
・スキャンモードに移行するとグライドブーストが中断される
・スキャンモードに移行すると硬直が切れる

というバグが発生するみたいですね。
2万パイルが連打出来ちゃうけどそんなに意味は無いような(

 

 

・・・反動の硬直も無くなったりして?

 

 

 

→という訳で検証してみましたが、

 

攻撃を受けて生じた硬直も切れるようですね

でもこれだけの為に肩潰すのもアレだし、バシバシ打たれたら硬直キャンセルも非常に大変なのであまり実用性は無いのかも。。

 

 

 

○[ACV]その他(あくまで個人的)
・跳弾での軽減率は66%(2/3)ではなく60%になっていたらしい
・6万パイルは3万×2と思ってたら6万×2だった。勘違いしてた
・リロードタイムの計算は武器ごとに違ったりするらしい(係数?)

 

ACOPのBBSとかスレ漁ってると楽しいです。

 

 

 

 

○コントローラー

 

いくつかのサイト様を参考に改造してみた。
でも、光らないのとSTART/SELECTは要らん!という事で削ったのがちょっとしたデメリット。
まあ部品さえあれば光るオプションは楽に追加出来るのですが。

 

 

 

所要時間は20時間くらい・・・

自分にも出来るかもー( ^-^)/
とか安直な考えでやるもんじゃあ無いですねorz

 

 

 

○[WordPress]WP-Photo Album Plusがなかなか良い
Pixivのブログパーツみたいなのが欲しいけど、特定のだけを表示する事が出来なかったり、
そもそもPixivにうpしない物を表示させたいなあ。って思ってたらこれを見つけました。

このページの右フレームで動いてるのがそれです。

 

しかしこのブログの鯖がセーフモードで動いてるので設定に手間取りました…(´`

 

導入したい方は、WordPressのプラグイン検索でどおぞ。

 

 

 

ひとまずこんな感じで。

最近も相変わらずACV。とは言え、まだチーム入ってませんけどね。。
触るだけで楽しいです(´ω`