いつものBlenderで

BlenderとUnityなどを書いていくところ。

プライバシーポリシー

このページは、誰かが私達のサービスを利用することを決めた場合に、個人情報の収集、使用、および開示に関する私の方針について訪問者に知らせるために使用されます。

あなたが私のサービスを使用することを選択した場合、あなたはこの方針に関する情報の収集と使用に同意します。収集した個人情報は、本サービスの提供および改善に使用されます。このプライバシーポリシーに記載されている場合を除き、私はあなたの情報を使用したり他人と共有したりしません。

使用広告サービス

※ご不明な点があれば、お気軽にお問い合わせください。  elight2213@gmail.com

【振り返り】Unity1週間ゲームジャム【あつめる】に参加しました。

unityroom.com


unity1weekに参加しました。かれこれ5作品目の投稿です。
全12回開催中の5回参加となんとも微妙な戦績です。
今回はTwitter進捗動画UP駆動開発でいきました。
最終日までどう制作していったか振り返ります。

1日目

帰宅後、企画を考え始める。
昼間に考えた最初の案は冷静に考えると微妙だったのでボツに。
いつもアイデア出るのが遅れに遅れ死にかけている。
何をあつめたら面白いかで、1番ピンときたのが擬音をあつめる。
擬音をキーワードに以前聞いたゲームネタを思い出す。
「その場に即した擬音を使うとそのイメージの効果が現れる」というもの。
他にも代案ないか一応考えたが、1番いいアイデアはコレだった。
イデアは寝かせるとボロも見えて洗練されていくので一旦おいておいて
おそらく3dモデル動かすから、自作モデルを手本にざっとつくる。意外とリグまわりがそこまで気にならないレベルになったので(突き抜けとか多々あるが)モデルはこれでよしとして1日目は終了。

2日目


別件でZenject使うと公言したのでアセット入れつつ、githubのReadMeみたり、資料みたりしてZenjectさんとお友だちになろうと画策する。 

また、ちょうど作者セール+まとめ買いセールで50%OFFの学校アセットを購入する
これでステージは作らなくていい(ぐへへ)

機能把握とアセットインポートして配置しただけで進捗をUPできるようなものがなかった。が、なんとなく進捗動画UPしたかったので、あとで破棄する前提のその場しのぎコードで動いているように見せる。それが上記のツイート。

3,4日目


Zenjectを最低限使わさせてもらえる。程度にはわかってきた。
明らかに本来の使い方じゃなそうなところがちらほらあったが、気にしてたら間に合わないので目を瞑る。

Zenjectいいなと思ったのが、例えば
擬音を使えるエリアに入ったら通知を飛ばす。
通知を購読する側はそれをみてよしなに処理をする。
というオブザーバーパターン実装があったとして、通知する側と購読する側の参照解決を全部Zenjectがやってくれたのが良かった。zenject使わず、シングルトンも使わずだと結構面倒なGameManagerのようなルートクラスから順繰りに参照解決させていくとかになると思うので。

 

5,6日目


脳内妄想と実際の画面出力のギャップに苦しみながらどうにか落とし所を考える。
良かった点はCinemachineを使えたところ。3,4目まではプレーンなカメラで頑張っていたが限界を感じなにか良さげなものないかと探した結果、なんとなくTimelineとセットで使わないと機能しないのかなと勘違いしていたが単体でも全然使えた。
これは今後も使っていくなーと。もっと早く触っておけ感。
当初想定したギミックはほぼ最初の教室部屋しか使えず、教室と廊下部分からのギミックまではできたが、全エリアの1/4くらいの進捗だった。
構想は最初のエリアを3階として2階、1階、昇降口でEND。
厳しいなーと思いつつ、土曜は終了。

 

最終日
起床時刻は12時を過ぎている 。。

冷静に20時着地は無理だなと悟る。
1階エリアは捨てて最終ステージの昇降口、2階の順に作る、後ろから作るスタイル。最悪2階すらカットする想定。

いいアイデア出ず、うだうだしていたが、どこかのシーンで曇っているカガミをキュッキュッと拭くシーンは入れたいと考えていたことを思い出す。
加えて、今までなんとなくキャラの足音を「ペタ」と表現していたが、それはキャラのモノではなく見えないなにかが後ろについている。

それでカガミを経由するとその何かが見えて襲われるというアイデア
それなりに面白そうだったのでこれを最終シーンのネタとして実装する。
カガミの部分はレンダーテクスチャ使って表現
結局3Dモデルでの表現ができなかったのでテキストオブジェクトでごまかすことに。
当初のアイデアとは違ったイメージにはなったが、まぁ、これはこれで。
一応この後はSEこそ変わらないものの足音は「ペタ」から「タッ」に変わっていたりする。細かすぎて伝わらないやーつ。

www.youtube.com

 

クリアシーンに関してはもっと凝ったほうがいいんじゃないか、せめてタイトルロゴでもあったほうがいいんじゃないかという脳内意見が乱立したが、他のゲームもプレイしたいし、月曜の仕事それで響かせるのもなんだか嫌だったのでこちらで完成としました。

 

https://unityroom.com/games/onomatopoeic_girl

ゲームはこちらです。

 

 

[Unity] グーグルプレイ連携で詰まった話

詰まったのでメモ

環境 Unity2017.1 android 4.1以上

詰まったところ

なぜかグーグルプレイにログイン出来なかった。
接続していますから音信不通でログイン失敗する。

結論、playstoreから落とせばログインできた。

なんか釈然としないが、うーん。

以下備忘録

セットアップ

https://github.com/playgameservices/play-games-plugin-for-unity

から pluginをunityに入れる (zipの中にunityパッケージがある

window>google play (ry > android > setup から設定をする

Directory to save (ry, Constants class name はデフォでおk

Web App Client ID も なしで

Resources Definitionにパラメータ貼り付けるわけだけど、これはdev consoleから持ってくる

DevConsole

前提として、devにアプリを登録&公開していること(α版でおk

ゲームサービスから新しいゲームを追加でゲームを追加し、公開にチェックが付くようによしなに設定する

リーダーボードを設定しておくとリーダーボードページにリソースを取得が出現する

リソース取得からxmlをコピる(これをさっきの Resources Definitionに貼り付ける

Script

ログイン

using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
 
public class GPGSLogin : MonoBehaviour

{

    void Start ()

    { 

 
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder ().Build (); 

    PlayGamesPlatform.InitializeInstance (config);

    PlayGamesPlatform.Activate ();

    Social.localUser.Authenticate ((bool success) => {});                                                

    }
}

リーダーボードにスコアを送る

Social.ReportScore ((long)score, GPGSIds.leaderboard_hogehoge, null);

リーダーボード表示

Social.ShowLeaderboardUI();

unity1weekのゲームリリース [ローリングスタック]

 

 


f:id:elight:20170723173741g:plain


↑こんなんです。
ブロックに潰されないように積んでく、タップだけの超シンプルゲーム。

あんまし、unity1weekのころと変わってないです。
パフォチュンと広告周り、グーグルプレイ連携で結構時間取られました。
iosは気力があったら申請するかも。

ゲーム開発自体は好きなんですがいつもなんだかんだ完成しなかったり、リリースできなかったりしていたので、unity1weekには感謝感謝です^ ^

 

play.google.com

ローリングスタック | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

UnityでHPバー等を斜めに表現する方法

f:id:elight:20160322122303g:plain
よくあるこういうやつ

何も考えずに斜めにした画像バー用意してやっても期待したとおり動かない.
BaseMeshEffectクラスを拡張して描画させるとよい.
コードは以下.

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

/// <summary>
/// 四角形を平行四辺形に変更します
/// </summary>
public class ChangeUIToParallelogram : BaseMeshEffect {

	/// <summary>左側か右側か向きを決めます</summary>
	public bool isLeft;

	/// <summary>水平線とのなす角</summary>
	[Range (0, 75)]
	public int angle = 30;

	public override void ModifyMesh (Mesh in_mesh)
	{
		if (!this.IsActive ()) return;

		List<UIVertex> list = new List<UIVertex> ();
		using (VertexHelper vertexHelper = new VertexHelper (in_mesh)) 
		{
			vertexHelper.GetUIVertexStream (list);
		}

		this.ModifyVertices (list);

		using (VertexHelper vertexHelper2 = new VertexHelper ()) 
		{
			vertexHelper2.AddUIVertexTriangleStream (list);
			vertexHelper2.FillMesh (in_mesh);
		}
			
	}

	public override void ModifyMesh(VertexHelper in_vh)
	{
		if (!this.IsActive())
			return;

		List<UIVertex> vertexList = new List<UIVertex>();
		in_vh.GetUIVertexStream(vertexList);

		ModifyVertices(vertexList);

		in_vh.Clear();
		in_vh.AddUIVertexTriangleStream(vertexList);
	}

	public void ModifyVertices (List<UIVertex> in_vList) 
	{
		if (this.IsActive() == false || in_vList == null || in_vList.Count == 0 ) return;

		Vector3 vec = in_vList[1].position - in_vList[0].position;
		float h = vec.y;
		float fac = h * Mathf.Tan (Mathf.Deg2Rad * this.angle);
		float left = (this.isLeft)? fac : 0f;
		float right = (this.isLeft)? 0f : fac;

		List<Vector3> v = new List<Vector3> ();
		v.Add (new Vector3 (left,0f,0f));
		v.Add (new Vector3 (right,0f,0f));
		v.Add (new Vector3 (right,0f,0f));
		v.Add (new Vector3 (right,0f,0f));
		v.Add (new Vector3 (left,0f,0f));
		v.Add (new Vector3 (left,0f,0f));

		for (int i=0; i<in_vList.Count; i++) {
			UIVertex tmpV = in_vList[i];
			tmpV.position += v[i];
			in_vList[i] = tmpV;
		}
	}

}

このスクリプトをuGUIのImageオブジェクトに適用させるといいかんじに斜めバーが作れる

unityのversionは5.2.2f