インディーゲームクリエイター目指すやつのブログ

インディーゲームクリエイター目指す、20歳の学生ですのブログです。開発環境はUnity、ドット調の2dゲームを主に作っています。

ジャンプの高さによって、重力とジャンプ力を求める

gravity = 重力
maxJumpHeight = ジャンプの高さ
timeToJumpApex = ジャンプの頂点に到達するスピード
jumpPower = ジャンプ力

gravity = -(2 * maxJumpHeight) / Mathf.Pow(timeToJumpApex,2);
jumpPower = Mathf.Abs (gravity) * timeToJumpApex;

UIのText改行の仕方

\nで改行できる。

しかし、インスペクタービューで受け取ったstringではできない。

その場合は[Multiline]を使えば改行できる。

[Multiline]public string text;とすれば、改行できるstring型を受け取れる。

ちなみに、配列でも[Multiline]は使える。

 

UIのTextメモ

RichText

  textの一部の色やサイズを変更できるかどうか。詳しくはここ*1

Align by Geometry

 意味わかんないけどチェックを入れたほうがきれいに整列してくれた。

Horizontal Overflow

 水平方向の表示範囲から出た場合、改行するか、そのままにするか。

Vertical Overflow

 垂直方向の表示範囲から出た場合、切り捨てるか、そのままにするか。

Best Fit

  余白により自動的にフォントのサイズが設定した最大最小サイズに変更される。

Raycast Target

 Raycastできるか、クリックやタップに反応するかいなか。

 Rayだから手前にべつのUIとかがあると反応を妨げてしまうらしい。

 

 

 

 

 

UIのTextメモ

richText

 textの一部の色やサイズを変更できるかどうか。詳しくはここ*1

Align by Geometry->意味わかんないけどチェックを入れたほうがきれいに整列してくれた。

Horizontal Overflow->水平方向の表示範囲から出た場合、改行するか、そのままにするか。

Vertical Overflow->垂直方向の表示範囲から出た場合、切り捨てるか、そのままにするか。

 

 

 

 

「アラスジクエスト」についての考察

好きにプレイヤーがステージを選択できる。

ステージ同士の関連性を無視できるマップ作りができる。

制作側としては楽で良いと思った。

最後のステージでは別のステージにヒントが書かれていて、お!となった。

 

 

 

RPGゲームがなぜ飽きないのか考察メモ

RPGの戦闘要素は基本単調なのになぜ飽きないのか考えてみた。

 

その1 

単調だけれど、レベル上げによって成長する快感が得られるからやめない。

ただ、歩いて、A連打するだけで成長できる。クリッカーゲームのような要素がある。

 

その2

戦闘だけじゃなく、探索とか買い物、ミニゲームがあるから飽きない。

 

その3

ストーリーが気になるからやめられない。

これは飽きてるけど、ストーリーだけ気になる場合があるかもしれない。

HierarchyにMonoBehaviorを継承したスクリプトをドラッグアンドドロップしたらスクリプトをAddComponentされたGameObjectを生成する

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

#if UNITY_EDITOR
using UnityEditor;
#endif

using System.IO;
using System.Reflection;
using System;


[CreateAssetMenu]
public class SpriteAnimationClip : ScriptableObject {
	public Sprite[] sprites;
	public float speed;
}



#if UNITY_EDITOR
public class DropScript
{
	static bool idDragExited;

	//Editor起動またはゲーム起動時に呼び出される。
	[InitializeOnLoadMethod]
	static void AutoStart()
	{
		Debug.Log("DropScript AutoStart");

		//ヒエラルキーに描画範囲にマウスが入ったら呼び出されるコールバック
		EditorApplication.hierarchyWindowItemOnGUI += HierarchyOnGUI;
	}
		

	//ヒエラルキーの描画範囲のコールバック
	static void HierarchyOnGUI(int instanceID, Rect selectionRect)
	{
		//ユーザーが現在どのような入力を行ったか
		var curr = Event.current;

		switch (curr.type)
		{
		case EventType.DragPerform://ドラッグアンドドロップ開始
		case EventType.DragUpdated://ドラッグアンドドロップ中
			idDragExited = true;
			break;
		case EventType.DragExited://ドラッグアンドドロップ終了
			if (idDragExited)
			{
				idDragExited = false;
				OnDragExited();
			}
			break;
		}
	}

	//ドラッグアンドドロップ終了したときの処理
	static void OnDragExited()
	{
		//ドラッグアンドドロップしているファイルパスが0(なにももっていなかったら)
		if (DragAndDrop.paths.Length > 0)
		{
			//すべてのファイルを列挙
			foreach (var path in DragAndDrop.paths)
			{
				//オブジェクトを生成
				CrateScriptObject(path);
			}
		}
	}
		
	static void CrateScriptObject(string assetPath)
	{

		//CSScriptだったら
		if (Path.GetExtension (assetPath) != ".cs")
			return;

		//拡張子を抜いたファイル名を取得
		var className = Path.GetFileNameWithoutExtension(assetPath);

		//クラス名からTypeを取得
		//MonoBehaviorを継承した大抵のものはAssembly-CSharp.dllに含まれるのが普通.
		var type = Assembly.Load("Assembly-CSharp").GetType(className);
		//生成したクラスのタイプ型が取得できる
		if (type != null) {
			//new GameObjectでゲームオブジェクトを生成
			var go = new GameObject (className);

			//タイプ型をアドコンポーネントする
			Component comp = go.AddComponent (type);

			//nullならアドコンポーネントできないクラスだから削除
			if (comp == null) {
				UnityEngine.Object.DestroyImmediate (go);
			}
		}
	}
}

#endif