名古屋でアプリ・VR開発を行っています
ワクワクできるゲームをガンガン開発リリース中!

Unityのちょっとした機能(入力フィールド編)

こんにちは、SAT-BOXのコアラです。

皆さん、ゴールデンウィークはどうでしたか、楽しかったですか。

僕は楽しかったです、来年もあるといいなぁ



さて、気持ちを切り替えてやっていきましょう!

まずこちらをご覧ください!

f:id:sat-box:20170508171154p:plain

今回はこのTransform・・・ではなく、その中の入力フィールドでできることを少しご紹介したいと思います。


この入力フィールド、中で四則演算ができること、皆さんご存知でしたか?

試してみましょう!

f:id:sat-box:20170508175850p:plain

1+2*3を入れてみました、正しく計算されれば、9!ではなく7になるはずです。

f:id:sat-box:20170508180025p:plain

見事!7になりました。

しかし、これだけではありません。

%を使った余り計算もできますし、^を使ったべき乗の計算もできます!

( )の入った計算式も、正しく計算してくれます。

ただし、べき乗の計算は、0乗ならちゃんと答えが1になりますが、-1乗などマイナスのべき乗はできないみたいです。

余りとべき乗は使う機会はあまりないですが、覚えていて損はないですね。

四則演算ができるのは、Transformの入力フィールドに限らないので、いろいろなところで使えます。

便利な機能なので、是非使ってみてください!

【消しゴム落とし】祝!300万ダウンロード突破!

こんにちは。SAT-BOXのカピバラさんです。

なんと!この度あの「消しゴム落とし」が

300万ダウンロードを
突破いたしました!

ありがとうございます!

f:id:sat-box:20170425091223p:plain


人気ゲームアプリとして学校や職場を中心に

大反響をいただいております!!

300万DL記念消しゴムプレゼント!

さて今回、300万ダウンロード消しゴムとして、

とってもおめでたい消しゴムがプレゼントされます!

f:id:sat-box:20170425091227p:plain

是非使ってみてくださいね!

他にも・・・

使える消しゴムは150種類以上!
エンピツなどの組み合わせ消しゴムや季節感のある消しゴム
ネタ消しゴムのビール、ケーキ、飛行機、ねこあつめて戦ってみよう!

対戦モードでは最大4人までプレイ可能で、
友達や家族と盛り上がること間違いなしです!

普通の一人用の対戦モードやに加え、

・進め!消しゴムくん
・チャレンジ
・パーティー対戦・協力
・ネット対戦
・カスタマイズ
・不思議な教室
...etc

とモードが盛りだくさん!!


是非、まだダウンロードしていない方はダウンロードしていただき、
遊んでみてくださいね!

また、もっとみんなで楽しめる、多人数プレイに特化した消しゴム落としの
「消しゴムパーティ」もどうでしょうか!

リンク


大反響!消しゴム落とし【弾いて!ぶつけて!突き落とせ!】

大反響!消しゴム落とし【弾いて!ぶつけて!突き落とせ!】

開発元:SAT-BOX
無料

posted with アプリーチ

消しゴムパーティ

消しゴムパーティ

開発元:SAT-BOX
無料

posted with アプリーチ



皆さん楽しいゲームライフを送りましょう!

では(^^)/


ホームページはこちら

sat-box.jp

UnityでHumanoidのIKを使ってみる1

こんにちは。

SAT-BOXのカピバラさんです。

まずは告知。

ニコニコ超会議2017のブースに出店する事になりました!

場所は「超まるなげひろば」の予定です!

ニコニコ超会議に行く予定のある人は、行ったら是非探して

プレイしに来てくださいね!(^^)/

www.chokaigi.jp


では本題へ。

現在、VRスポーツの卓球で人のアニメーションを使っていて

IKがとても便利なので少し紹介します。

順番に見ていきましょう

IKとは

Inverse Kinematics(インバースキネマティクス)の略です。

ざっくり言うと、手首や足首の位置から

腕や膝等、関節の角度を逆計算する手法です。

UnityでもHumanoidの設定のAnimationはこのIKが使えて、

物を持ったりすることが出来ます。


IKを使う準備

まず、モデルがHumanoidの設定でないと使うことが出来ません。

「Generic」「Legacy」になっている場合は、「Humanoid」

変更する必要があります。


「Generic」の部分を「Humanoid」に変更
f:id:sat-box:20170424180908p:plain

「Apply」で適用
f:id:sat-box:20170424180902p:plain

変更完了!
f:id:sat-box:20170424180905p:plain


AnimationControllerを付けて、そこにHumanoid用のアニメーションを入れて、

無事アニメーションしましたね。

f:id:sat-box:20170424181822g:plain

あら、隣に棒が二本ついてますね

棒に手を固定させてみましょう。

棒に手を固定する

まず、固定させる座標が必要なので、固定させるところに分かりやすく

空のオブジェクトを配置しましょう。

f:id:sat-box:20170424185112p:plain

次に、AnimatorWindowを開いて、IKの設定をします。

下の歯車をクリックして
f:id:sat-box:20170424190044p:plain

IKPassのチェックボックスにチェックを入れます。
f:id:sat-box:20170424190053p:plain

これで準備完了。
f:id:sat-box:20170424190056p:plain

ソースコードはこんな感じ。

using UnityEngine;
using System.Collections;

public class IKController : MonoBehaviour {

	[Header("HandAnchors")]
	[SerializeField]
	public Transform rightHandAnchor = null;
	[SerializeField]
	public Transform leftHandAnchor = null;

	private Animator animator;

	void Start()
	{
		animator = GetComponent<Animator>();
	}

	void OnAnimatorIK()
	{
		if (!animator)
			return;

		if (rightHandAnchor != null)
		{
			animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1);
			animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1);
			animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandAnchor.position);
			animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandAnchor.rotation);
		}

		if (leftHandAnchor != null)
		{
			animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1);
			animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1);
			animator.SetIKPosition(AvatarIKGoal.LeftHand, leftHandAnchor.position);
			animator.SetIKRotation(AvatarIKGoal.LeftHand, leftHandAnchor.rotation);
		}
	}
}

このスクリプトをAnimatorがついているキャラ自体にアタッチし、

RightHandAnchorLeftHandAnchorにさっき棒の子オブジェクトに作った

空のゲームオブジェクトをアタッチします。

f:id:sat-box:20170424185609p:plain

これで再生してみましょう。

f:id:sat-box:20170424191051g:plain


手が棒に固定されました!

でも手がめり込んでますね

こういう時は、棒の子オブジェクトに作った空のゲームオブジェクト

の座標を変えたり、回転させたりして、調整します。

f:id:sat-box:20170424191223p:plain

~調整後~
f:id:sat-box:20170424191056g:plain


こんな感じで固定させることが出来ます。

これはUnityのデフォルトの機能ですが、

AssetStoreで、「FinalIK」というアセットがあり、

これを使うともっと高度な事が可能になります。

http://u3d.as/6ec


何かに使う事があれば是非。

では(^^)/

今回参考にしたページ
docs.unity3d.com



HumanoidのIKを使ってみる2 - SAT-BOX BLOG

Unityでオブジェクトを一気に生成!

こんにちは!

このたび4月に入社しました新入社員のペンギンです。

入社してからもう2週間が経ちましたが、来週末にはゴールデンウィークですね!楽しみがある反面、気を緩めすぎないよう気をつけねばっですね。

 

今日はUnityでちょっとした豆知識的なものを紹介したいと思います!(※注意※あまり役には立ちません(笑))

 

複数のオブジェクトに同じ子オブジェクトを設定したい場合は、一気にオブジェクトを選択して、

f:id:sat-box:20170417180848p:plain

右クリックして「3DObject→Cube」を行うと、

 f:id:sat-box:20170417181324p:plain

のように、一気に子オブジェクトが作られます!

ちなみに、右クリックして「UI→Image」を選択すると、

f:id:sat-box:20170417181810p:plain

のように、Canvasの直下に選択したオブジェクトの個数分Imageが作られました!

選択した個数分一気にオブジェクトが作られるんですねー

便利なのか、便利じゃないような微妙な機能ですね^^;

 

以上となりますが、今後ともよろしくお願いしますm(__)m

 

 

Unityのちょっとした機能(Inspectorのクラス配列編)

こんにちは、SAT-BOXのコアラです。

今日は偶然見つけたUnityの機能を紹介したいと思います。

その前に、皆さんは作成したクラスの変数をInspectorに表示したことがありますか?

[System.Serializable]をつけることによって、そのクラスの変数をInspectorに表示したり変更することができます。

今回は例として、Animalというクラスを表示してみます

using UnityEngine;

public class Sample : MonoBehaviour {
    public Animal animal;
}

[System.Serializable]
public class Animal {
    public string name;
    [Header("年齢")]
    public int age;
    [Header("身長(cm)")]
    public float height;
    [Header("体重(kg)")]
    public float weight;
}

こうすることで 

 f:id:sat-box:20170410160443p:plain

こうなります。


さて、ここからが本題ですが、こういったものを作るとき、配列にして使うこともあるかと思います。

しかし配列にすると、Inspectorにはこのように表示されると思います。

f:id:sat-box:20170410161347p:plain

ここで問題なのは、各要素の見出しがElementになっていて、どこに何があるのか分からないという点ですね!

非常に分かりづらいです!

しかし!

この見出し、変えることができます!

やり方は簡単です。

Inspectorから各要素を開いて、Nameのところに文字を入れてみましょう。

すると・・・

f:id:sat-box:20170410162228p:plain

なんと、Elementの部分が、Nameに入れた文字に変わりました!

f:id:sat-box:20170410162750p:plain

こうすれば、どこに何があるかも一目で分かりますね。


では、なぜ変わったのかですが・・・

表示している変数の中にstring型の変数があれば、Elementの文字がstring型と同じになる、という仕様になっているようです。

しかし、見出しを変えるには条件があります。

それは…string型がクラスの変数の中で一番上に表示されていること です。

試しに、int型のAgeを一番上にしたところ、Elementに戻ってしまいました。

f:id:sat-box:20170410171157p:plain

string型が一番上にないと変えれないようですね。


これで以上です。

この機能、あまり使う機会はないかもしれませんが、知っていて損はないと思います!

開始と終了の間の時間をランダムで取得する

こんにちは。SAT-BOXのカピバラさんです。

ついに新年度が始まりました!

春もようやく目が覚めたようで、色んな所で桜が咲いていますね!

会社に行く途中や昼食でちらほらパリッとしたスーツで

新社会人だと思われる人をあちこちで見かけました。

僕も気持ちを改め、新社会人に負けないよう、

これからもガンガンゲームを作っていきたいと思います!

開始時間と終了時間の間で、ランダムな時間を取得する関数を作ったので紹介します。

まずはソースコード

public static DateTime RandomDateTime(DateTime _startDateTime , DateTime _endDatetime)
{
    //開始時間が終了時間より後の時
    if (_startDateTime > _endDatetime)
        return _startDateTime;
	
    TimeSpan span = _endDatetime - _startDateTime;
    float ranSpan = UnityEngine.Random.Range(0, (float)span.TotalMilliseconds);
    return _startDateTime + TimeSpan.FromMilliseconds(ranSpan);
}

_startDateTime には開始時間を入れて

_endDateTime には終了時間を入れると、

開始時間と終了時間の間の時間をランダムに返してくれます(^▽^)/

DateTimeとTimeSpanの違い

まず、ここで出てくるのが「DateTime」「TimeSpan」です。

「DateTime」は時間の瞬間を表す構造体で、
「TimeSpan」は時間そのものを表す構造体です。

DateTimeは「4月3日5時30分」を表すのに対し、
TimeSpanは「1日と4時間20分」というように、
時間の間隔のようなものを表します。

僕のイメージですが、「タイミング」「間隔」のような感じだと思います。

処理の説明

上記の処理としてやっていることは、

まず開始時間と終了時間の間隔を求めて、

TotalMillisecondsで先ほど求めた時間の間隔をミリ秒に直します。

例えば、3分30秒をミリ秒にすると…

TimeSpan ts = new TimeSpan(0, 3, 30, 00);
Debug.Log("3分30秒は" + ts.TotalMilliseconds + "ミリ秒です");
//3分30秒は210000ミリ秒です

上記のような結果になります。

そのあと、0からその間隔の時間をランダムにします。

そのランダムにした値を開始時間に足すと

「何時何分」~「何時何分」の間のランダムな時間

を求めることが出来ます!!

ミリ秒をTimeSpanに戻すのは、FromMilliseconds関数でできます!

TimeSpanと秒の変換

下記のように変換します。

・(TimeSpan)→(ミリ秒)
(変換したいTimeSpan).TotalMilliseconds


・(ミリ秒)→(TimeSpan)
TimeSpan.FromMilliseconds(変換したいTimeSpan)


こんな感じです。

あまり使う機会はないと思いますが、使うときはどうぞ!

【参考にしたサイト】

時間を表すTimeSpanオブジェクトを作成する、情報を取得する: .NET Tips: C#, VB.NET

TimeSpan 構造体 (System)

「Text Mesh Pro」が素晴らしい!

こんにちは、SAT-BOXのこうもりです。

今日はUnityの文字を表示するのに便利なAsset
「Text Mesh Pro」
を少しご紹介したいと思います。


Text Mesh Pro

もともとUnityには「Text Mesh」という文字表示方法がありましたが、色々と不便なところがありまして、その不便なところが解決されている上に、その他様々な+αなことがきるようになっているのが、「Text Mesh Pro」なのです。


TextMesh Pro - Product Highlight

デモ動画を見ていただければ分かる通り、文字のデザインを変えたり、演出を付けたりといったことが簡単にできるようになっているようです。

そしてなんといっても「Text Mesh」でできなかった、文字間や単語間が調整できることや、
「Text Mesh」だとフォントデータの”Font Size”を大きめに設定しておかないと大きく表示したときに文字がぼけてしまいましたが、それも解決されているのが非常にありがたいです。

まだあまり触れていないので、細かい使い方はおいおいご紹介させていただきたいと思います。



今日はこれでおしまいです。

皆さん楽しいゲームライフを送りましょう!


ワクワクできるアプリをガンガン開発リリース中!

ホームページはこちら↓

f:id:sat-box:20161220134006p:plain