そんなことよりすしたべたい

ゲーム開発やイラストを描いたり 現在2Dアクションシューティング「朝はどこ」、進化シューティングゲーム「ネコノイア」開発中

Anyportraitでゲームに用いた実装

これはUnity アセット真夏のアドベントカレンダー 2020 Summer!9日目8月9日の記事です。

 

ゲームに用いたスクリプトを用いる実装について書きます。

中級者向けの記事になります。

AnyPortraitとはキャラなどに骨などを設定してアニメーションさせるアセットです。

近いアセットやソフトでいうとAnima2DやSpineなどです。

 

できることの一例

ボーン作成、メッシュ変形、物理動作などなど

 

 

初心者向け解説とかもしたかったのですがちょっと量的にでかくなりそうだったので割愛します。

エディタが日本語対応していたり公式から日本語のチュートリアルが出てたりするので公式おすすめ

公式HP

https://www.rainyrizzle.com/anyportrait-jp

とても素晴らしい 

 

開発環境

Windows

Unity2019.4.4f1

 

何をしたか

 

スクリプトで設定した座標に頭や座標を向かせる

アクションシューティングゲームとかでよくある照準の方向に腕や頭を向かせるやつ

 

 

f:id:tolune:20200808071600g:plain



 

使用した機能

IKコントローラー設定

position・・・エフェクター骨まで移動させる(ボーンの移動範囲外には移動しない)

LookAt・・・エフェクター骨の方向に回転させる

 

参考資料

公式チュートリアル:骨のIKコントローラ

https://www.rainyrizzle.com/apam-boneikcontroller-jp 

やりかた

f:id:tolune:20200808073238g:plain

f:id:tolune:20200808071518g:plain

  1. エフェクター骨用のボーンを作成 今回は親ボーンを外しておく
    左ウィンドウからメッシュグループを選択
  2. 右のメッシュグループウィンドウから骨を押して骨を編集を押す
  3. 移動・回転させたいボーンを選択
  4. 右のIKコントローラーの設定をNoneからLock Atまたはpositionを選択する(今回は頭はLockAt 両腕はPositionを選択した)
  5. エフェクター骨(移動させる・向かせる場所になるボーン)を選択
  6. デフォルトのFK/IK重量を1にする これが0だとOFFで1だとON(制御パラメーターでスクリプトでONOFFやアニメーション毎にONOFFなどもできるがここでは割愛する)
  7. ベークする
  8. こんな感じで狙いたいゲームオブジェクトを作成する今回はTargetという名前を付けたゲームオブジェクトを作った
    f:id:tolune:20200808074405j:plain 
  9.  こんな感じのスクリプトC_CharaMainを作ってキャラクターのゲームオブジェクトか何かに付ける

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

    public class C_CharaMain : MonoBehaviour
    {

    public apPortrait m_CharaApPortrait;

    public Transform m_TargetTrans;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
    m_CharaApPortrait.Play("Move", 1, apAnimPlayUnit.BLEND_METHOD.Interpolation, apAnimPlayManager.PLAY_OPTION.StopSameLayer, true);

    m_CharaApPortrait.SetBonePosition("Target", m_TargetTrans.position, Space.World);

    }
    }

     

    SetBonePosition("Target", m_TargetTrans.position, Space.World);でエフェクター骨用のボーンの座標をスクリプトから移動してる


  10. 付けていくf:id:tolune:20200808081248g:plain


    こうなる

    f:id:tolune:20200808075823g:plain

    Targetゲームオブジェクトの方向にキャラの頭が向いて腕が移動するまでができた
    回転制限がないので頭が一回転する

  11. 頭の角度を制限

    f:id:tolune:20200808080256g:plain

    骨の編集画面からボーンを選択して無効な制約をクリック
    出てくるピンク色の線が制限角度なのでこれを見ながら角度の最小値最大値を設定する

  12. 完成

    f:id:tolune:20200808071600g:plain

    あとはマウスでターゲットを動かすなりキャラを動かすなり 

 

現在AnyPortraitを使用してこういうゲーム開発しています。

おすすめです。

 

 

Unity1Weekを振り返る

 

 

はじめに

unity1weekを終えて現在スマホ移植やアップデートなどの延長戦に突入中のホロウ様です。

2018/11/19から2018/11/25日にかけて開催された第10回Unity1Week「10」の振り返りや感想などを書いてみます。

 

参加した動機

前々からUnity1Weekの存在は聞いていた

現在開発中の朝はどこのつなぎとして最終的にスマホゲームとしてリリースできるゲームを作りたい

なんか楽しそう

 

お題

「10」 

 

開発したゲームの紹介

製作ゲーム

ネコノイア

ジャンル

2Dシューティングゲーム

コンセプト

お題は10ということで敵かキー、合わせて10個壊せば次のマップへ

ヘンテコ、超単純操作で高いゲーム性、説明したり説明見せたりしなくてもわかるくらい分かりやすく、気持ちよく

使用アセット

ProCamera2D

カメラの移動や揺れなどに使用。敵が出てきた際に画面が収まるように調整されるのもこのアセットのおかげ

DOTween

アイテムの取得メッセージなどの演出に使用

InControl

操作に使用。タッチでもキーボードでもがお手軽に実装できる(お手軽とは)

Odin

 

TextMeshPro

 

 

そんなこんなで参加表明

 

1日目

休憩時間に設定を練る

メインで開発しているゲームがキリの良いところまで行ったら手を付けようと思ったが終わらず構想を練るだけで終わる

ヘンテコな猫みたいなの操作して多人数で競い合うゲームとか絶対シュールで楽しいだろーとかかなり直感でゲームを構想し始める

 

 2日目

メインで開発しているゲームのシステムが完成せずそろそろUnity1Weekに手を付けないと不味いので中断し開発開始

休憩時間に作成した開発資料を元に作り始める

 

20分ほどでキャラ完成

 

 

世界観の方向性が決まる

 

ずっとゲーム画面の進捗を上げれていないので取り急ぎゲーム画面を仮で作る

 

3日目

移動などの再開発めんどくさいのでメインで開発していたゲームから基本システムを流用

ボーンアニメーション関連などの必要のない部品をそぎ落とす

 

手順

 

メインのゲームのリソースをアセットとしてエクスポート

ネコノイアにリソースのみインポート

メインのゲームで使っていたストアアセットをインポート

ついでに使わないアセットもそぎ落とす

最終的にこんな感じになった

 

4日目、5日目 

扉のキーを10個破壊すると開いて次のマップへというルールを考えていた

1Waveが長いとだるくなりそうだと考え敵とキーどちらでもカウントされるように

 

 

 

こんな感じで敵出現エリアにぶつかると指定した出現地点から敵が出現しキーリストに追加される

キーか敵で構成されている中から10体倒したらゲート解放というシステムを二日かけて作る

f:id:tolune:20181207235415j:plain

敵生成

ゲームとしての完成系が見えてき始める

 

妖怪WebGLビルド出来ない

プロジェクトを作り直して余計なアセットを消したら無事動作

 

6日目最終日

Unity1Week作品にオンラインランキングつけるといいといったツイートを見たので取り急ぎオンラインランキングを実装

 

 

 

1週間を振り返ってみて

Unity1Weekが初めてなのとこういったゲームジャムでプログラマとして参加すること自体が初めてだったので内心びくびくでした。

 

沢山の人が遊んでくれたり感想をくれたり何度も遊んだりしてくれてとても新鮮で幸せで嬉しかったです。

 

公開初日に他の方のゲームを見てTwitter投稿機能の宣伝力を思い知りました。

後から実装はしましたが出遅れた感を感じたので次回は初日からつけようと思います。

 

あと難易度調整は早い段階から設計しておくべきだったなぁ・・・

 

その後ツイート機能を追加

他にも感想を元にアップデートを続けていく

 

リザルト追加

難易度上昇システム追加

キャラ進化システム実装

 

今後も進化先やストーリー追加などのアップデートとスマホリリース予定です。よろしくお願いします!