Unity1週間ゲームジャムに参加してみた 6日目

シェアする

  • このエントリーをはてなブックマークに追加

前回、シーン切り替えに成功し、いろいろと画像素材を用意し始めたところで時間切れを迎えました。

続く6日目。締め切り前日です!
締め切りに余裕を持つならば、今日で公開できる位まで作り込まないとまずいところ。

大急ぎで塗り途中の風人くんを仕上げます。

判定の目安となる線をつけた状態で出力します。上に重ねたズボンを圧縮していくことで、ズボンを下げていく様を表現……。
やだ、なんか元の画像だけだとエッチぃ……。

本当はただの黒いパンツだったんですが、テクスチャ貼り付けたときに一緒に張り付いてしまったのでそのままにしています。ド派手なビキニパンツ愛用の風人くん……。キャラ設定がひとつ無駄に増えてしまった。

足が切れてるのは、膝辺りまでしか映さないからです。靴とか描くのが苦手なので、無理しないでぶった切る。
体のバランスとかおかしいのはもう気にしない。雰囲気伝わればOK。
現在の自分のできる限りで勝負します。無理しない。
けれども、時間ができたら絵の勉強もちゃんとやりたいですね……絵が上手くなったら、もっといろいろなことできるからなぁ。

画面に投げ込み、位置を調整します。

この作業してて思ったんですけど。
今まで箱がぶつかったらタグを変更していたけれど、これ、ズボンの縦サイズで判定つけることできるんじゃない??
ズボンと一緒に透明の箱を動かすつもりだったけれど、ひとつで済むならひとつで済ませたい。

updateの中に

//m_speed分の速さで縮小
transform.localScale = new Vector3 (0, -m_speed,0);

のコードを追加。
……が、面白いくらいにスポーンと脱げてしまう(笑)

調べていったら、このサイズって比率じゃなくて実際に表示するサイズなんですね。0入れてたらそりゃ消失するわ。

void start に現在表示している比率を入れて……

zHeight = 0.67494f;

updateで縮小をかけていく。

//m_speed分の速さで縮小
zHeight = zHeight - m_speed;
transform.localScale = new Vector3 ( 0.62044f,zHeight,0.62044f);

たまに変更したはずなのに反映されてないことがあって、なんでかなーと思っていたんですが、コード変更した後プレイボタンちゃんと押してからじゃないとビルドされないんですね。連打してて、たまに変更反映されてないときがある。

きちんと落ち着いてビルドし、保存して、実行。

……やったぁぁぁぁ! 無事縮小に成功したあぁぁぁぁぁぁぁ!!!!

えぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇぇ???!!!

ちょっ、下! 下も縮んじゃってるうぅぅぅぅ!!!

そうだよね! 縮小しろとしか命令してないもんね!!!そりゃ下も縮小されちゃうよね!!!

予想外すぎる出来事がツボにハマって、ひとりでしばらく笑い転げてました。
つくづく絵面がひどい。誰だ、こんなゲーム考えた奴。

private float zPosi; を追加し、Updateに下記のコードを追加します。

//同じ速度で下に下げる
zPosi = zPosi - m_speed;
transform.localPosition = new Vector3 (-1.829f, zPosi, 0f);

とりあえず、無事にズボンを固定して下げることに成功。
後は判定処理を書いていきます。

updateでいちいち確認してtagを変えていってもいいのだけれど、重くなりそうだからGameScriptで「ボタンを押した瞬間にパンツのサイズを取得し、サイズでgood判定」の流れにします。

スクリプトをまたいだ値の渡し方が分からなかったのですが、探していたらこちらのサイトさんを発見。

プレイヤーの弾の残り数など,他のスクリプトの変数の値が欲しいことがある. その方法について紹介する. PlayerScript.cs private int bulletCount = 5; この,bulletCountを取...

そうか、値を渡す関数を作ればいいのか!
早速実装します。

そして、渡した値を元にifで処理を振り分け……。
途中、現在のtransformの値の取り方が分からず苦戦しましたが、
なにもzHeightという名前で値を変化させているのだから、それをそのまま使えばいいんですよね……それだけで2時間以上躓いていました。

【Pants.cs】

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Pants : MonoBehaviour {
	public float m_speed; //移動の速さ
	public GameObject titleM;	//タイトルマネージャ
	public GameScript GameCode;	//ゲームスクリプトのコード	
	private float zHeight;	//ズボンの高さ
	private float zPosi; //ズボンのポジション


	// Use this for initialization
	void Start () {
		zHeight = 0.67494f;	//初期の高さ
		zPosi = -2.366f;	//初期のポジション
	}

	// Update is called once per frame
	void Update () {
		//m_speed分の速さで縮小
		zHeight  = zHeight - m_speed;
		transform.localScale = new Vector3 ( 0.62044f,zHeight,0.62044f); 
		//同じ速度で下に下げる
		zPosi = zPosi - m_speed;
		transform.localPosition = new Vector3 (-1.829f, zPosi, 0f);

		//ズボン下がりすぎたら強制的にボタン押す
		if (zHeight <= 0.31300) {
			GameCode.PushButton ();
		}

	}

	//取得用関数
	public float GetNow(){
		return zHeight;
	}

}

【GameScript.cs】

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; //シーン変更の為のライブラリみたいなもの

public class GameScript : MonoBehaviour {
	public GameObject Pants;
	public Pants PantsScript;
	private float nowH;

	// Use this for initialization
	void Start () {
	}

	// Update is called once per frame
	void Update () {
	}

	//ボタン押したときの処理
	public void PushButton(){
		nowH = PantsScript.GetNow();
		Debug.Log (nowH);
		if ((nowH >= 0.47794 ) && (nowH <= 0.67494)) { SceneManager.LoadScene ("Clear"); //Clearのシーンに移動 } else if ((nowH >= 0.38294 ) && (nowH < 0.47794)) { SceneManager.LoadScene ("Great"); //Greatシーンに移動 } else if ((nowH >= 0.35955 ) && (nowH < 0.38294)) {
			SceneManager.LoadScene ("BAD"); //Badのシーンに移動
		} else {
			SceneManager.LoadScene ("GameOver"); //GameOverのシーンに移動
		}
	}


}

これで、ようやくズボン周りのプログラムができましたーー! メチャメチャ時間かかった……!!!

自分の大きさを取得する方法など、宿題が残りましたが。

サンプルのコード通りに書いているのに、Google翻訳によると「MissingComponentException:「パンツ」ゲームオブジェクトに「RectTransform」は付けられていませんが、スクリプトがそのオブジェクトにアクセスしようとしています。
おそらく、RectTransformをゲームオブジェクト “pants”に追加する必要があります。または、スクリプトを使用する前にコンポーネントがアタッチされているかどうかを確認する必要があります。」
というエラーメッセージが出てきます。thisでもGameObjectでも、わざわざ変数で当ててあげても駄目だった。今度またトライするときは気をつけないと……。

とりあえず、メインのプログラムが書けたところで6日目終了です。今日中にタイトル画面やシーン切り替えに手をつけるつもりだったのに……!
明日全力で頑張りたいと思います。

……ほんと、間に合うかなぁ……?

→7日目に続く

いよいよ締め切り当日です。8時まで残り12時間。間に合うのか……?! 前回、やっとこさボタンの押すタイミングで表示されるシーン...

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。