前回の2Dゲーム製作の続きです。
ほとんど進んでいないに等しい
バイキンにタッチで表情を変える
バイキンをクリックするとやっつけれるようにするのですが、その時バイキンの表情を変えてみます。
表情・ポーズを切り替える | Live2D Manuals & Tutorials
公式マニュアルによるとanimatorのblendという機能を使うと、スクリプトから表情を変化させれるそうです。その場合表情パラメーターをいじるのではなく、変化後の表情をlive2Dで作って置いて、アニメーションとして取り込んで、それをブレンドする形でした。
マニュアルのスクリプトを動かすと、こんな感じでインスペクタのバーで表情を変えることができます。
この値を、クリックした時に変えるスクリプトを書かないと・・・
deltaTimeとか使って書いて見たけどうまくいかなかったので、結局表情は変えないでいいや・・・
健康な歯から虫歯へのフェードアウト
unityをやっているとたまに聞くiTweenというアセット。やっと使いました。
アニメーションがスクリプト経由で簡単にできるらしい。
スプライトの透明度を変えてフェードアウト的な処理をしてみました。
ちなみに透明度を下げるオブジェクトの下に虫歯画像を置いています。これはteratailで質問して得られた回答をもとに作りました。
https://teratail.com/questions/95199
本当は画像から画像へスムーズに変換する機能とかあるのかなと思ってたけど、ないのかな?
こんな感じです。
if ( Input.GetKeyDown( KeyCode.Space )){
iTween.ValueTo(gameObject, iTween.Hash("from", 1f, "to", 0f, "time", 2f, "onupdate", "SetValue"));
}void SetValue(float alpha) {
// iTweenで呼ばれたら、受け取った値をImageのアルファ値にセット
MainSpriteRenderer.color = new Color(255,255,255, alpha);
}
参考
バイキンのランダム発生
前回Live2Dのモデルがプレハブ化できなくて、インスタンスによるランダム発生ができないって書きましたが、Live2Dの最新のSDKを入れたらできるようになったので、普通にプレハブを使ってランダム発生させます。
前回同様こちらを参考に
こんな感じで1秒ごとにMakeEnemyされるようにしました。
if (timeleft <= 0.0) {
timeleft = 1.0f;
MakeEnemy ();
}void MakeEnemy() {
GameObject enemy = (GameObject)Instantiate(enemyPrefab);
Vector3 p = enemy.transform.position;
p.x = Random.Range(-9, 9);
p.y = Random.Range (-3, 3);
enemy.transform.position = p;
}
なんかすごく偏る気がするけど気のせいかな?
本当は歯の近くにバイキンを出したいのですが、やり方がよくわからないので、画面全体にランダムに出して、歯とバイキンの距離が近かったら歯が虫歯に変わる、って感じにしようと思います。
歯とバイキンの距離が近くなったら、虫歯になる
distance関数で、バイキンと歯の距離が2以下になったらitweenを発動させるっていうスクリプトを作ったのですが、
UnassignedReferenceException: The variable objB of kin has not been assigned.
You probably need to assign the objB variable of the kin script in the inspector.
というエラーが出ます。
調べたら、初期化ができてないからって書いてありました。
初期化って何?
hamazakifactory.hatenablog.com
なんかどうやってもこのエラーが治らない。ゲームは動くのですが、tweenされない。
クローンを消しても点数が入らない
現れたバイキンをクリックすると点数が入るように前回していました。
しかしプレハブ化してクローンとして現れた敵をクリックしても点数が入りません。
原因として、外部のスコアを管理しているスクリプトをバイキンにアタッチしているのですが、クローンのバイキンはそれがアタッチされてない状態になってしまうこと
元:
クローンだと
こうなってしまう。
内容としては下の記事が近そうなのですが、頭が回っていなくてこれを読んでもどうしたらいいか全然わかりません。
最後に
完成しない気がする。
2Dゲーム作ったことがないから作りたい、せっかくLive2Dも触り始めたからそれも組み合わせようっていうモチベーションで始めたけど、ゲームを作るのそんなに好きじゃないのかもしれない・・・
作っているのも面白いゲームじゃないのは明らかだし、今モチベーションがゼロだ〜
VRしようかな
こちらの記事も参考になりそう。