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

【ラグドール】うっ…やられた…。を作ってみた【Unity】

こんにちは。

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

とうとうUnity5系からUnity2017に変わりましたね。
Unity4の時から使っているのでその頃と比べると、Unityとても便利になったなぁと感じます。地獄のOnGUI経由のUIはもうやりたくないとつくづく思います。。。


と、そんなことは置いといて、今回は、何か攻撃されたときや、ぬいぐるみ等に使う「ぐでっ」とするラグドールの機能を使ってみようと思います。



まず、ラグドールとは何でしょうか。
Ragdoll」は英語でぬいぐるみという意味です。その意味の通り、ぬいぐるみのような「ぐでっ」とする物理挙動を簡単につくってくれるのがラグドールの機能という事です。

「習うより慣れろ」ということで実際にやっていこうと思います。という事で、今回も登場します、SAT-MANです。

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

なんと今回、Unity2017専用のスペシャル仕様です。
心なしかなんだかライティングが綺麗になったような気が…!
気のせいですかね、特に何も変わってないです。はい。


ラグドールはここで設定できます。
f:id:sat-box:20170724174222p:plain



ここのRagdollを押すと、下のようなウィンドウが出てきます。ここにそれぞれ対応するボーンを入れていきます。
f:id:sat-box:20170724175010p:plain


ざっくりですが、それぞれ説明します

名前 対応する箇所
Pelvis
LeftHips 左足の付け根
LeftKnee 左ひざ
LeftFoot 左足
RightHips 右足の付け根
RightKnee 右ひざ
RightFoot 右足
LeftArm 左腕
LeftElbow 左肘
RightArm 右腕
RightElbow 右肘
MiddleSpine 背骨
Head


全て設定出来たら、あとはコライダーが重なっているとあらぶってしまうので、位置を調整して終了です。
f:id:sat-box:20170724175842p:plain


SAT-MAN「うっ…やられた…。」
f:id:sat-box:20170724175817g:plain


では('_')

Unity Hierarchyで新規オブジェクトを生成したときの座標

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

今日はUnityのTransformを手軽に変更できる方法を紹介します!

Unityで開発を進めていると、Sceneビューを動かすことってよくありますよね。

Sceneビューを動かした状態で新しいオブジェクトを生成すると...


Positionの値がめちゃくちゃ…

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

これは、Hierarchyで新規にオブジェクトを生成をするとSceneビューの中央に生成されてしまうからですね。

つまりSceneビューの中央がこの座標となっているわけです。

でも、Position(0,0,0)を基準にオブジェクトを配置とかしていきたいときに、こんな値になっていたら、

いちいち右クリックして「Reset」を押したり「0」を入力しないといけない…。

とてもめんどくさいですよね。

 

しかし!

こちらの方のブログに手軽に変更できる方法が書いてあったので、
参考にさせていただきました。

gamedevelopmentmemo.blog.fc2.com

1ボタンクリックで初期化…すばらしい!

 

 

以上、ペンギンでした。

【新作アプリ】机で野球!遂にリリース!

こんにちは。

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

新しいアプリがリリースされたので紹介します!

今回紹介するアプリは「机で野球」というアプリです。

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


アプリの概要

机の上を舞台に、様々な球場で野球が楽しめます!オリジナルのチームを編成して、全国の学校に対戦を挑めます!2017年の夏は、このアプリで盛り上がること間違いなしですね…!

1台のスマートフォンがあればすぐにに対戦できて、しかも簡単操作!誰にでも分かりやすいから、友達や家族と熱いバトルが出来る!
f:id:sat-box:20170711180905j:plain

練習モード

まずは安定の一人モード。
CPU相手に対戦してみよう。

対戦モード

一つの端末で、二人でバチバチの対戦が出来る!
投げる方は手元を隠してもいいかもしれないですね!
作ったチームを選択して、二人で対戦しよう。
一緒にチームを作っても楽しいよ!

イベント対戦・ランキング

「全国遠征」と「トーナメント」の二つがあるぞ!
どちらも上位を目指せ!ランキング上位に入賞した際には、レアな報酬のバットが貰える!
f:id:sat-box:20170711180909j:plain

ガチャ・お楽しみ

毎日お楽しみでポイントをゲットして、ガチャを引こう!
ガチャにはレアバット(ペン)があるという噂も…。
f:id:sat-box:20170711180913j:plain

チーム編成

自分の好きなチーム名、選手名がつけられるよ!
作ったチームに全国遠征、トーナメントに行かせてランキング上位を目指そう!


こんな感じでカジュアルなアプリかと思いきや、めっちゃ内容の濃いアプリになってます!ランキングは一週間ごとにリセットされるので、誰でも1位になれる!是非ダウンロードしてみてくださいね!

机で野球

机で野球

  • SAT-BOX
  • ゲーム
  • 無料

play.google.com


2017年、夏、このアプリで熱くなろう!

では(^^)/

uGUIのOutlineとShadowの話

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

uGUIにはOutlineShadowというコンポーネントがあります。

同じuGUIのTextやImageと合わせて使うんですが、どちらも名前通りの使い方ができるので、さくっと紹介したいと思います。

Outline
f:id:sat-box:20170711090830p:plain

Shadow
f:id:sat-box:20170711090833p:plain



仕組み的には、裏に同じ文章が描画されているだけです。

試しにOutlineのEffectDistanceの値を大きくしてみると・・・


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

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


このようになります。


Outlineは、斜め4方向に文字をずらして描画することでアウトラインをつける仕様なのですが、ここで1つ問題が生じます。

アウトラインの端をよく見てください・・・


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


Xの端など、ところどころアウトラインが欠けているのが分かります。

これは、先ほど斜め4方向に文字を描画していると書きましたが、それが関係していて、描画していない方向(上下左右など)があるためにこういった現象が起きます。

つまり、もっと裏に描画する数を増やせばいいのですが、Outlineにはその機能はありません。

この点については、こちらの方のブログに詳しい説明と解決策が載っていますので、恥ずかしながら(?)紹介させていただきます。

freelyapps.blog.jp


結構大きな欠点なので、Outlineは使いづらいですが、面白いこともできます。

それは、OutlineにOutlineをつけたり、ShadowにShadowをつけることができる点です。

こんな風に重ねてみると・・・


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

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


すごくXのギザギザが気になりますが、OutlineとShadowは重ねがけができます。

これで何かできそうな予感・・・はしない。


以上、OutlineとShadowの紹介でした。

GameObjectをアニメーションに合わせて動かしてみた

こんにちは。

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

今回は、IKシリーズからアニメーションについて書いていきたいと思います。


では、白い人型のモデルに登場してもらいたいと思います。

登場回数も結構な回数になってきたので、

そろそろこのモデルにも名前を付けますか。

命名『SAT-MAN』

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

…センスのある、いい名前ですね。

今回も「SAT-MAN」に働いてもらいましょう!

SAT-MANの視線の先にはとてもおいしそうなファーストフード達!

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

(体に悪そう)

今回は、このキャラを移動のスクリプトを書かずにアニメーションだけで、アニメーションに合わせてGameObjectを動かしていきたいと思います。

今回のアニメーションはこちらのアセットから拝借いたしました。
https://www.assetstore.unity3d.com/jp/#!/content/15667:AssetStore「Taichi Character Pack」

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



今回は前に転がるアニメーションを使いたいと思います。

こんな感じのアニメーションになります。

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

まずはスペースキーを押すと転がるように処理を書きます。

※これは「移動のスクリプト」には含みません。

これで見てみましょう。

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

このままだと転がるアニメーションをしたあと、元の位置に戻ってしまいますね。。。

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

「こんなの、Animatorの [ApplyRootMotion]にチェックを入れればええんちゃうの?」とか思っている、そこのあなた。

「ところがどっこいそれだけじゃ上手くいきません。」

アニメーションデータの、Root Transform Position (XZ)のBake Into Poseにチェックを外してみます。

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

するとあら不思議、うまくいきました!

この項目は、チェックを入れると、Transformの値をアニメーションによって変更するかどうかになります。

Transformの座標が変更しているかどうか、シーンビューで見てみるとよくわかると思います。

【チェックを入れた場合】
f:id:sat-box:20170703192848g:plain

【チェック外した場合】
f:id:sat-box:20170703192911g:plain

こんな感じでアニメーションに合わせてTransformの位置を変更することが出来ます!ただ、アニメーションに合わせてTransformの位置を変更するようにすると、入ってはいけない場所に行けるようになってしまったり色んな所にめり込んで行ったりと、デメリットもたくさんあります。

これらのデメリットは、色んな工夫で解決できます。

ですが個人的には今後の拡張性も兼ねてスクリプトで移動の制御をするようにすることをお勧めします。


「Foooooooo!!! I love fast-food!!!」

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

「あっ、通り過ぎた」


では(^^)/

Unityのコンポーネント追加方法紹介!

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

今日はコンポーネントの追加方法について、1つ紹介したいと思います!

オブジェクトにコンポーネントを追加したい場合、Assetsの中からドラッグアンドドロップで追加することがありますよね。

オブジェクトが1つだけなら全く問題ないのですが、これが複数オブジェクトとなると、ちょっと変わってくるんですよね。

複数オブジェクトを選択してドラッグアンドドロップで追加しようとしても追加されるのはカーソルを合わせたオブジェクトだけ…

なんでやねん!っていつも腑に落ちないです。

選択しているオブジェクト全て追加されればいいのにっ!

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

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

複数オブジェクトに同時にコンポーネントを追加する方法を複数オブジェクトを選択してAddComponentから毎回スクリプト名を入力する方法しか知らなかったので、いつもいつも入力していました...。

、ついこの間、複数オブジェクトを選択してInspectorにドラッグアンドドロップすると、選択しているオブジェクト全てにコンポーネントが追加されることに気づいたのです!

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

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

画期的発見でした(笑)

いままで作業効率の悪い面倒な追加方法をしていたんだなって、

ちょっとションボリしました。

みなさんも効率の良い作業方法を見つけていきましょう!

 

以上、ペンギンでした!

PlayerPrefsの謎

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

今日はタイトルの通り、PlayerPrefsの話です。



PlayerPrefsといえば、Unityでセーブ機能を作るときに使うものですよね!

簡単にセーブ、ロードができるので使いやすい反面、欠点があります。

欠点

1、保存できるものがint型、float型、string型に限られる

2、Windowsだと保存場所がレジストリになる



欠点1の話はしません!一行で完結しました。

欠点2が今日のメインストーリーです。僕がPlayerPrefsを使いたくない最大の理由がここにあります。

レジストリ

PlayerPrefsの保存場所は、OSによって異なります。

それについては、以前のSAT-BOXブログに書いてありました。
ameblo.jp

そして、Windowsだとレジストリに保存され、レジストリにはOSの重要な情報が入っているため、下手にいじるとPCが壊れます。

僕はレジストリいじって壊したことがあります

そんな僕からしたらレジストリに保存されるというのは、トラ、ウマ、コアラです。

なのでPlayerPrefsはあまり使わないのですが、ふと気になったことがありました。

「Windows10だったら保存場所変わってたりしないかな~」って

そんなに期待してませんでしたし、結論から言って変わってなかったです。

ですが、検証しているときに大事件が起こりました。

それは・・・


Unity5.5からレジストリに保存されていない!


6月最大の衝撃でした。

前後のバージョンをいくつか落として試しましたが、5.4.5まではレジストリにあることが確認できました。

しかし、5.5からのバージョンではレジストリの中に保存されていませんでした。

PlayerPrefs.GetString("Koala")などで保存したものは持ってこれたので保存はされているみたいですが・・・(レジストリの中も結構探しました・・・)


つまりどうゆうこと?

予想1 仕様が変わった

これが僕の中では濃厚ですが、Unityの5.5からのドキュメントなどを見ても、PlayerPrefsの保存場所はレジストリの中で変わっていませんでした。

また、調べても保存先が変わったというような情報は見つかりませんでした。

予想2 コアラがなんがミスした

ないと信じたい。

予想3 環境の違いでなんか起きた



結論

わからんけどコアラが怪しい


全く心当たりはないですが、他の事例が見つからなかったので何かやっちゃったかもしれません。

それに、人を疑うくらいなら自分を疑いたかった・・・ かっこいー

最後に、今回の検証で作成したプロジェクトの数とソースコードを載せておきます

f:id:sat-box:20170619192543p:plain
7つ!それぞれUnityのバージョンが違います!(これいらないかも

using UnityEngine;
public class Sample : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {
        PlayerPrefs.SetString("Koala", "Koala!");
        PlayerPrefs.Save();
        Debug.Log("SAVE");
    }

}

間違ってないよね!?

是非皆さんも確認してみてください。僕も引き続き検証していきます。

以上、PlayerPrefsの謎でした!