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

鵜飼いを見に行く話

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

ブログでペンギンさんが紹介していましたが、先日フットサルがありまして、いやー、体力の衰えを感じてしまいました。

まだ若いんですが。本当に若いんですが。



SAT-BOXではフットサルのような社内イベントが定期的に行われていますが、今週末は鵜飼いを見に行きます。

鵜飼いってなに?って方のために五七五で説明を考えたので聞いてください。

鵜飼いとは 鵜でアユをとる 漁法だよ


らしいです。調べたので間違いないです。

アユ料理も食べれるので、個人的にすごく楽しみにしています。



何を隠そう、コアラはアユが好物なのです。(本当のコアラって魚食べれるのでしょうか、気になります)

好きな魚ランキングでは1位かもしれません。ウナギがライバルですね。

好きな食べ物ランキングだと圏外ですね。ウナギは35位です。



話がそれましたが、コアラはウナギが好きだということを最後にお伝えします。おいしいからね!

では、行ってきます!

HumanoidのIKを使ってみる2

こんにちは。

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

前回はHumanoidのIKの機能を使ってHumanoidのモデルの手を左右の棒に固定しました。今回はその続きです。

今回は、Humanoidモデルが何か物を『見る』という処理を作ってみたいと思います。という事で今回も前回と同様白い人型のモデルに登場してもらいたいと思います。

はい。
相変わらず今回も哀愁を漂わせております。

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

IKの設定については前回のIKの記事を参考に設定してください。
sat-box.hatenablog.jp


まず、見る対象のオブジェクトを作成します。
今回は、このアセットを拝借。

f:id:sat-box:20170522171003j:plain
http://u3d.as/Mh3:FREE Food Pack

…おいしそう。

この中から、おにぎりを頂戴してとりあえず配置。
今回はこのおにぎりを人型モデルが見るように設定していきます。
その後、この人型モデルの目の前に持ってきます。

ほら、おにぎりだよー!
f:id:sat-box:20170522171331g:plain

このままだと、勿論見ないですよね。

前回のソースコードに追加して、見る処理も書いていきます。

using UnityEngine;
using System.Collections;

public class IKController : MonoBehaviour {

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

	[Header("LookWeight")]
	[SerializeField, Range(0.0f, 1.0f)]
	private float lookTotalWeight = 0.0f;
	[SerializeField, Range(0.0f, 1.0f)]
	private float bodyWeight = 0.0f;
	[SerializeField, Range(0.0f, 1.0f)]
	private float headWeight = 0.0f;
	[SerializeField, Range(0.0f, 1.0f)]
	private float eyeWeight = 0.0f;
	[SerializeField]
	private GameObject lookTarget;

	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);
		}


		//敵が自分の方向を向くようにする
		if (lookTarget != null)
		{
			animator.SetLookAtWeight(lookTotalWeight, bodyWeight, headWeight, eyeWeight);
			animator.SetLookAtPosition(lookTarget.transform.position);
		}
	}
}


こんな感じです。
前回に比べて調整する項目が増えました。

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

上から説明していくと

LookTotalWeight…全体の重み。
BodyWeight…体の重み
HeadWeight…頭の重み
EyeWeight…目の重み
LookTarget…見る対象

で、重みと表現しているのはどれだけ見る対象に向けるか、のような意味です。1を100%、0を0%と考えてもらい、何パーセントくらい見る対象に向けるか、という感じです。

とりあえず実際にやってみるのが分かりやすいと思うので、ちょっとやってみましょう。

全て1にした状態
f:id:sat-box:20170522173336g:plain

BodyWeight だけ1にした状態
f:id:sat-box:20170522174739g:plain

HeadWeight だけ1にした状態
f:id:sat-box:20170522174837g:plain

EyeWeight だけ1にした状態
f:id:sat-box:20170522174937g:plain

あっ
この人型のモデル、目が無い…。
目だけ動く感じは分からなかったと思いますが、BodyWeightだけ1の時は、体で見る方向を向く感じで、HeadWeightだけ1の時は頭だけ、その方向を向く感じだったと思います。


こんな感じで調整できるようになるので、「人の感じ」を出すときは見るという調整がいると思うので、ぜひ使ってみてください!

では(^^)/

前回の記事
HumanoidのIKを使ってみる1 - SAT-BOX BLOG

「VoxelShotVR」が配信開始!更に「VRSports」がアップデート!

こんにちは、カピバラさんです。

ニコニコ超会議のVRブースでも大好評だったあのVoxelShotVRが遂に配信開始されました!リリース記念のセール中で、今なら25%OFFで遊べます!ご興味を持たれた方は、是非ダウンロードしてプレイして下さい!

【Steamのリンク】
store.steampowered.com

「どんなゲームなの?」と思う方もいらっしゃると思うので、少しご紹介したいと思います。

f:id:sat-box:20170519172752j:plain

ざっくり説明

周りから、ボクセル調のゾンビがたくさんやってくるので、それをいろんな武器を使って倒していきます!

ゾンビを倒すと得点が入って、得点を競い合います。ヘッドショットを狙うと点数が高かったり、他のオブジェクトを撃つと得点が入ります!。ワールドランキングで全世界の人と戦いましょう!

www.youtube.com

様々なギミックのステージ

舞台は、
「City(街中)」
「Airport(空港)」
「Desert(砂漠)」
「Base(軍事基地)」
と多彩なステージがあります!それぞれ、違ったギミックがあり特徴的なステージが多いです。ヘリコプターが攻撃してきたり、巨大なボスゾンビが襲ってきたり、色んなギミックを楽しんでください!「エンドレス」では時間制限がなく、ライフがなくなるまでプレイできます!
思う存分にゾンビを撃ち倒しましょう!初心者が分かりやすいようにチュートリアルもあります!

f:id:sat-box:20170519181752j:plain

色々な武器を使いこなせ!

武器の種類も色々あり、
・ハンドガン
・ショットガン
・ガトリング
・ロケットランチャー
・スナイパーライフル

等々。

武器は両手で持つことが出来て、二丁拳銃にすることが出来ます!ステージに使い捨ての武器と、リロードできる武器があり、それぞれの切り替えが高得点を取るポイント!使い捨ての武器は時間が経つと元あった場所にまた出てきます!

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

モバイル版も配信開始!

Steamで配信されているのは、HtcVIVEOculus Riftで遊べるのですが、お持ちのAndroidiPhoneで遊べるモバイル版も配信しています!モバイル版の方は、コントローラーの代わりに視線を向けて撃ったり、銃を持ち替えたりとスマホのVR向けに作られています。

モバイル版の方は、Cardboard等にスマホを入れて遊べます!

リンクはこちら
GooglePlay
play.google.com

iOSも順次リリースされるので、少しお待ちください。

VRSportsにカートが追加!

VRSportsがアップデートされました!

7競技だったのが、「カート」が追加されて8競技になりました!
8競技の中で唯一の座ってできる競技です!

VRSportsをまだプレイしていない人は
この機会にプレイしてみてはいかがでしょうか!

Steamのリンクはこちら
store.steampowered.com

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

社員交流会

こんにちは!SAT-BOXのペンギンです。

 

SAT-BOXでは、社員交流会があり、色々なスポーツや社員旅行などなど行われております!

 

なんと今週の土曜日にはフットサルがあります!

フットサルは苦手ですが、運動不足を解消できるチャンスです!(翌日の筋肉痛が怖いですが...(笑))

 

社内の方々だけでなく、社外に出られている方々も参加されるので、積極的にコミュニケーションを取っていきたいと思います!

 

今日はプログラム的なことではありませんでしたが、

これで失礼させていただきます。

 

以上、ペンギンでした!

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


他にも書いたので是非見てください。
sat-box.hatenablog.jp
sat-box.hatenablog.jp