Category: SERIES
【Spacechem】Sync-3 何回かに1回
こんにちは。
Spacechem の解法、Sync の3つ目です。
今回は Sync コマンドの応用の使用法の1つである、
何回かに1回
について説明しようと思います。
具体的には、
1つのウォルドが何回か実行するたびに、もう1つのウォルドが1回処理する
というのを繰り返すことです。
例: ヘーパイストスIV KOHCTPYKTOP例として、ヘーパイストスIV のサイドストーリー、KOHCTPYKTOP の、ケイ素の分子を作り出すところを見てみましょう。
めちゃくちゃ長い処理になってしまったので、早送りしていますが、
赤のウォルドで2回輪の形をしたケイ素の分子を作った後、青のウォルドで1回
…
Read More
【Spacechem-tips】Sync-2 交互に実行
こんにちは。
Spacechem の解法、Sync の2つ目です。
今回は Sync コマンドの応用の使用法の1つである、
交互に実行
について説明しようと思います。
具体的には、
1つのウォルドの処理が終わったら、もう1つのウォルドの処理を行う
というのを繰り返すことです。
例: ヘーパイストスIV KOHCTPYKTOP例として、ヘーパイストスIV のサイドストーリー、KOHCTPYKTOP を見てみましょう。
ヒ素とホウ素を、1つずつ交互に ψ に出力しています。
これも Sync コマンドを使って実装しています。
どのように実装しているのか見てみましょう。
Sync コマンド2つ
…
Read More
【Spacechem-tips】Sync-1 「待機」としての「同期」
こんにちは。
Spacechem の解法、Sync の1つ目です。
今回は Sync コマンドの使い道の1つである、
「待機」としての「同期」
について説明したいと思います。
Sync の基本の使い方その前に、まずは Sync の基本的な使い方を説明します。
Sync は、基本的に
2つのウォルドのタイミングを合わせる
ために使います。
例として、アルコノストの1ステージ目「検出の基本」を見てみましょう。
このように、2つのウォルドが、自転車のペダルのように、ぐるぐると回っていますね。
2つのウォルドのタイミングを合わせることで、原子同士の衝突を防いでいるのです。
2つのウォルドで操作す
…
Read More
Spacechem の重要テクニック集!
こんにちは。shundroid です。最終ステージ「そして結末へ(End Of The Line)」をクリアすることができました!
そこで、今まで僕がクリアしていくうえで役に立った解法のポイントがあるので、それらを紹介していこうと思います。
僕が大事だと思う解法のポイントは、ずばり3つ!
Sync
回転
Flip Flop
です!それぞれについて紹介していこうと思います。
徐々に記事を公開していきます。公開まで少々お待ちください。
Sync
「待機」としての「同期」
交互に実行
何回かに1回
回転
点対称な分子の生成 その1
点対称な分子の生成 その2
点対称な分子の生
…
Read More
Unityで二次元配列のJsonを読む
こんばんはー。
Unityのステージ内容を Yaml で作ろうと思っていました。
しかし、よく考えてみれば、Unity 公式でサポート(5.3から)されている、Json で十分じゃね?と思いました。ステージの内容は、次のようなJsonにしました。
1234567{ "version": 1, "stage": [ ["block1", 2, 4], ["block1", 4, 4] ]}
しかし、JsonUtilityでParseしても、うまくやってくれませんでした。
■配列のネストは1つまで
多次元配列、配列内配列(ジャグ配列)、配列のコレクション
…
Read More
UnityでYAMLをパースする
※ UnityYamlMerge のことではありません!
Unity で、2D ステージの内容を YAML で作って、それをパースする方法です。
yaml-net を入れるhttp://sourceforge.net/projects/yaml-net-parser/files/から、フォルダーをたどっていくと、snapshot.zip があるので、ダウンロードし、展開してください。
Code ディレクトリ内にある、「Yaml.dll」を、Unityの Assets/Plugins に突っ込みます。
スクリプトを追加新しいスクリプトを作成し、次のように書きます。
12345678using Y
…
Read More
SceneManager.Unloadを、OnTriggerEnter時に呼ぶと凍る
こんにちは。昨夜、Unityがフリーズしてしまって、結構大変でした。
Unity 5.3.1です。
次のように実行すると、フリーズしました。
1234567void OnTriggerEnter2D(Collider2D col2d){ if (col2d.tag == "Player") { SceneManager.UnloadScene("MainMenu"); }}
なぜか、
SceneManager.LoadSceneではフリーズせず、
FixedUpdate、Updateのタイミングでやってもフリーズしない
…
Read More
RectTransformのoffsetMinとoffsetMaxについて
こんにちは。
Unity 4.6で、新しいUI Systemとして、「uGUI」が追加されました(結構前だけど)。
New UI System: Design UIs for your game or application using Unity’s powerful new component based UI framework and visual tools.
そのUIの座標の指定なのですが、Rect Transformというものを使っていて、結構複雑です。
ここでは、座標・サイズの指定ができるプロパティ、「offsetMin」「offsetMax」について調べたので、紹介します
…
Read More
【Unity】C# + SceneManagerでのMulti Scene Editing
読み込み1using UnityEngine.SceneManagement;
参考:
複数のシーンを読み込んでいる状態で・・1つのシーンをアンロードする1SceneManager.UnloadScene("シーン名");
シーン名は、Build SettingsのIDでもオーバーロードされる。ただし、読み込まれているシーン名、シーンIDに限る(あたりまえだけど・・)
1つのシーンをロードするここでハマった。
1SceneManager.LoadScene("シーン名", LoadSceneMode.Additive);
LoadSceneMode.Additiveを忘れない!
全部のシーンを
…
Read More
Input.GetKeyDownとFixedUpdateは一緒にしないほうがいいっぽい
Unityで2Dのスクロールゲームを作っています。スペースキーを押したとき、Jumpするように、次のようなコードを書きました。
1234567void FixedUpdate(){ if (Input.GetButtonDown("Jump")) { // 処理 }}
しかし、ジャンプするときと、しないときがあり、
Linecastの問題かと思ってググっていたところ、
を見つけました。
サイトによると、FixedUpdateではInput.GetKeyDownはしないほうがいいらしいです。
理由は、FixedUpdate
…
Read More
【Unity】Script上でのnew GameObject()の使い方
(Unity5.3.1で確認)
Unityで空のGameObjectを作って、シーンに追加したいとき、1Instantiate(new GameObject());
あれー!!なんか2つ作られてるー・・
そうです。実は上のコード、二重でゲームオブジェクトを作っているのです!
というわけで、解決策。
1new GameObject();
Instantiate()と書くことはできないので、new GameObject();とそのまま書いてみます。
これだけじゃ作るだけでコンポーネントのアタッチとか何もできないので、名前を変えてみます。
12GameObject g = new GameObje
…
Read More
なぜかUnityでtransform.Translateができなかった
なんでかわからないけどできなかった。
前は、Animatorでtransformを変えていたからできなかったれど、
今回は違った。
1gameObject.transform.Translate(10, 10, 0);
こんな感じになっていたコードを、
1234var vec3 = gameObject.transform.position;vec3.x += 10;vec3.y += 10;gameObject.transform.position = vec3;
こうしたらできた。
…
Read More
Unity2DでRaycastを使って座標からGameObjectを取得する
Raycastの練習として、やってみました。ほかの取り方もあるかもしれません。
12345678Vector3 pos = new Vector3(/* 好きな値 */);RaycastHit2D hit = Physics2D.Raycast(pos, new Vector3(0, 0, 1), 100);// 可視化Debug.DrawRay(pos, new Vector3(0, 0, 100), Color.blue, 1);// コンソールにhitしたGameObjectを出力Debug.Log(hit.collider);
このhit.colliderでGameObjectを取れま
…
Read More
Unity2Dでspriteがぼやける
こちらのサイトを参考にしました。
キャラクターがかわいい!!
上のブログの通りで、
Assets ビューでSpriteを選択したとき、Filter ModeをBilinearからPoint (no filter)に変えます。
ありがとうございます!
…
Read More