【Unity技術メモ】ジャンプの実装方法

ジャンプの実装方法についてメモ

◾️ジャンプの実装方法:
プレイヤーにColliderとRigidbodyを追加してAddForce()で上向きの力を加えてやる
 
◾️2段ジャンプの制御方法:
地面にColliderとタグを追加して、OnCollisionEnter()でプレイヤーが地面に触れたらフラグを立てて、
ジャンプしたらフラグを降ろす的な実装で実現可能
 
ただこの場合、床のオブジェクトが1つじゃなかったり、段差があったりすると
制御がうまく行かない。
 
 
◾️Raycastを使用する方法:
もう1つジャンプの実装方法としてRaycastを使用する方法がある
プレイヤーの足元にRayを飛ばして地面に当たるかどうかで地面に触れているかどうかを判定する
この実装だと壁があったり段差があったりしても問題なく動作するので、こっちの方がより汎用的かも
 
参考:

百英雄伝を触ってみた感触

本日発売したした百英雄伝、幻水ファンとしてはやらずにいられないと思い発売日に購入しました。まだ1時間くらいしかプレイしてないですが、触った印象を簡単に記載します。ちなみにPS4版でプレイしてます。

 

百英雄伝:

rabbitandbearstudios.com

 

雰囲気

ライジングと同じくHD-2Dっぽい感じです。個人的にはオクトパストラベラーやライブアライブみたいなグラフィックが好きなので嬉しかった。

 

幻水らしさ

幻想水滸伝」の精神的続編だけあっていろんなところに幻水らしさを感じられます。

  • 見覚えのあるキャラクターデザイン
    幻水1と同じキャラデザの方が担当されているから当然といえば当然ですが、主人公も1の坊ちゃんぽいですね(めっちゃ喋るけど)
  • Now Loading...で走るキャラクター
    ライジングの時も走ってた気がします(うろ覚え)
  • 戦闘の「おまかせ」機能
    幻水の「おまかせ」は全員が殴るだけだったけど今回は違うっぽい
  • アイテム、装備、パーティ等
    幻水で見たようなアイテムがあったりUI周りもどことなく幻水っぽさを感じました。6人パーティはやっぱり落ち着くなぁ

個人的に気になった点

  • セリフスピードが変更できない
    結構遅く感じる場面があるので設定から変更できたら嬉しかったかな
  • 移動に慣性がかかる
    街の移動時に止まっても慣性でちょっと進んでしまうので若干違和感を感じる
  • 後から難易度変更できない
    後から難易度変更できませんという注釈はあるけど難易度変更でアイテムが変わったりするのかどうかの説明が無かったので、結局よくわからずノーマルを選んだ
  • ローディングが長い
    他のハードはわからないけど、戦闘の度に前後でローディングが挟まるがこれが結構長い
  • フィールドに見えない壁がある
    見た目は普通の平原なんだけど見えない壁があって先に進めない箇所がある。これは技術的にどうにかできそうな気がするが開発期間の問題なのかな

 

あと、ライジングでも出てきた話がちらほら出てきたりするので、事前にライジングをやり直しておいても良かったなぁとちょっと思いました。引き続きプレイしてみてまた書きたい内容が溜まったらブログに載せようと思います。

【Unity技術メモ】UnityでのUpdate処理

Update処理の違いについて、毎回忘れてしまうのでメモ

 

◾️Update

 毎フレーム呼ばれる
 注意点:
 フレーム間隔が一定とは限らないので再現性を求められる処理には向かない
 

◾️LateUpdate

 毎フレーム呼ばれる(Updateの処理が終わった後)
 Updateの処理が終わって最後に何か行いたい処理がある場合に使用する
 

◾️FixedUpdate

 一定時間(Fixed Timestep)毎に呼ばれる
 注意点:
 即時性を求められる処理には向かない
 

chaGPTにも聞いてみた。

UnityにおけるUpdateFixedUpdateの違いは、フレームレート(fps)に関連しています

Update:

Updateメソッドは、フレームごとに呼び出されます。通常、画面の更新やユーザー入力の処理など、フレームごとに変わる内容を処理するために使用されます。

デフォルトでは、UnityのUpdateメソッドはフレームレートに依存します。つまり、フレームレートが高いほど、Updateメソッドがより頻繁に呼び出されます。

FixedUpdate:

 

FixedUpdateメソッドは、固定された時間間隔ごとに呼び出されます。通常、物理演算や動きの計算など、フレームレートによらず一定の間隔で処理が必要な場合に使用されます。

 

特に物理演算関連の処理はFixedUpdate内で行うことが推奨されます。なぜなら、Update内で物理演算を行うと、フレームレートによっては物体の動きが不安定になる可能性があるからです。

 

◾️入力処理はUpdate
FixedUpdateで行うと、呼び出しのタイミングよっては入力処理が検知できなくなってしまったり、ラグに繋がったりしてしまう。
 
◾️移動処理や物理演算など動きをつける処理はFixedUpdate
Updateは処理の重さによって一定時間に呼ばれる回数が変わってしまうため、そこで移動や物理演算を行うと状況に応じて結果に違いが生じてしまう。

フレーム毎に受け付ける必要がある入力処理等はUpdateに書く。逆に一定の動作をさせたい処理等はFixedUpdateに書く。実際プレイヤーが一定の速度で移動する処理をUpdateに書いたら、処理の重さによって速度が速くなったり遅くなったりしてしまっていました。

【Unity技術メモ】Unityでの移動と回転処理

オブジェクトの移動方法、回転方法について毎回忘れてしまうのでメモ

 
◾️移動
直接動かす:
transform.position
transform.Translate()
 
力を加える:
rigidbody.velocity
rigidbody.AddForce()
 
◾️回転

①transform.EulerAngles(処理の重さ:重)

②transform.Rotate()(処理の重さ:普通)

 

クォータニオン

③transform.rotation(処理の重さ:軽い)

Blenderの基本操作

UnityゲームのフィールドをBlenderで作成したかったので、Blenderについて学習する。

まずは基本操作を覚える。

 

参考にしたもの:

www.youtube.com

 

 

◾️画面の回転

  マウスのホイールを押しながら上下左右に動かす

◾️画面のズーム

  マウスのホイールを動かす

◾️画面の移動

  SHIFTを押したままマウスのホイールを押しながら上下左右に動かす

 

◾️オブジェクトの選択

  オブジェクトをクリック

  SHIFTを押しながらクリックすると複数選択できる

◾️オブジェクトの削除

  オブジェクトを選択した状態でXを押して出てきたメニューから削除

 

◾️オブジェクトの移動

 ・オブジェクトを選択した状態でG(grab)を押す

◾️オブジェクトの拡大・縮小

  オブジェクトを選択した状態でS(scale)を押す

◾️オブジェクトの回転

  オブジェクトを選択した状態でR(rotate)を押す

 

  ※オブジェクトの操作について

   ・オブジェクトの操作状態に移行するとオブジェクトの枠が白くなる

   ・XやYやZを押すことでその軸上での操作も可能

   ・右クリックを押すことで操作をキャンセルできる

   ・オブジェクトの操作は左側のメニューからも扱える

 

◾️オブジェクトの追加

  SHIFT+A → メッシュで追加したいものを選択

 

◾️モードの切り替え

  TABを押す(オブジェクトモード⇔編集モード)

  左上のプルダウンからも切り替えることができる

 

◾️編集モードの操作

  左上の選択モードから変更可能

   ・点選択

   ・線選択

   ・面選択

ゲームジャムの感想

先日、土日2日間で開催されたゲームジャムに初めて参加してみたので、参加してみての感想を書いてみる。

 

チームメンバーは全員初めて会う方たちで、1日目の午前中にゲームのテーマが発表される。開発期間は2日目の夕方までで、そのタイミングで成果物を提出する。当然時間を超えての作業は禁止。

 

良かった点:

  • 短期間でゲーム開発の流れを体験できること

まず自分はチームでのゲーム開発経験が無く、そういった経験を積んでみたいと思っていたので、ゲームジャムという場は何より最高の環境だった。他の人が使っているツールだったり技術だったりを見て、こんなことができるんだという自分の知らない気づきを多く得られることができた。また小規模ではあるが、チームとしてのゲーム開発という意味で、このポジションではどう作業を進めてどう動けば良いのかみたいなことを、感覚ではあるが身をもって体感することができた。

 

改善点:

  • 事前準備について

当日発表されるゲームテーマはあるものの、ある程度事前にどういった方向性でゲームを作りたいかや、どういった技術を使いたいか等は事前に打ち合わせして決めておいた方が良さそうと感じた。ゲームジャムはゲーム開発について学んだり、自身のスキルを伸ばしたりという目的もあるので、そういった観点での認識合わせもとても大切。当日テーマが発表されてからゼロベースで企画を考えるのは時間的にも厳しいし、それで面白いゲームが作れるかというか難しい気もする。

個人的に一番良さそうなのは、事前に各々で使いたい技術やゲームのイメージをいくつか考えておいて、それらを事前の打ち合わせで認識合わせしておき、当日のテーマが発表された時に、打ち合わせで出てきた案にテーマに沿った肉付けをしていき、面白くなりそうか考えるという進め方かなと思う。

  • マネージメントの重要性について

短時間の開発ではあるものの、チーム開発で期限も決まっているため、タスクの取捨選択を都度都度行っていく必要があったが、それがあまり出来ていなかった。

本来であれば、区切りの時間を決めて、その都度全体の状況を把握し、どこまでやるのか、どのタスクを落とすのかといった作業管理を行う必要があったように思う。(それをチームとしてどういう形で行うかも含めて)

マネージメントの上手くいっていないプロジェクトは失敗のリスクも高まってしまうため、ゲーム開発においてもそれは最も意識しておく必要があった。

 

まとめ:

ゲームジャムに初めて参加して、想像していた通りかなり大変ではあったものの、やっぱり終わってみると参加して良かったと強く思えた。今後も外部のゲームジャムイベント等あれば積極的に参加していきたい。そうすることで、ゲーム開発に関わる人との横のつながりも広がっていけたらいいなと思う。

Unityでコードを書かずにゲーム開発できるScriptMachineコンポーネント

UnityにはScriptMachineというコンポーネントがある。これを使えばコードを記載せずにVisualScriptでゲーム開発が進められる。以前はVisualScriptと言えば、Boltというものが使用されていたがそれに替わるものらしい。普段コードメインで書いてるとGUIでの操作は中々慣れないものがあるが、使いこなせると面白そう。

 

qiita.com

 

torisan-net.com