Advanced Search
Search Results
86 total results found
3Dモデルの仕組み(その2)
模様を付けましょう:UV座標 今までのモデルはすべて白い色で表示してきたが、実際にゲームで使うものは一定色ではない。前回作成した「MyCube」をベースにし、複雑な模様(テクスチャ)を付けてみましょう。具体的に、以下のようなサイコロを作ってみましょう この効果を再現するため、2次元の画像を3次元の立方体に貼らないといけないが、そのためなんとかして、「ペーパークラフト」のように3Dのオブジェクトを真っ平にし、2Dに展開しなければならない。 3Dモデルの場合、このプロセスは「UV展開」という。「U...
シェーダー
シェーダーはGPU(グラフィックスカード)で実行する特別なプログラムである。シェーダーを使うことにより、3Dモデルの「見せ方」(描画)などを自由に変えることができる。ただし、GPUで実行するプログラムは普通のCPUのプログラムと異なり、使い方を学ばないといけない。 GPUとCPUの違い CPUは「多目的のプロセッサー」で、タスクを切り替えるのは得意な要素である。例えば、Chromeでネットを調べ、見つけたソースコードをVisual Studioに貼り付けたい。プログラムを切り替えるときに、CPUは一旦Chromeを...
Shader Graph
プロジェクト設定 ShaderLabの自由度が高く、とてもパワフルなシェーダの作り方であるが、やや難しいところもある。複雑で高速なシェーダが必要なら、ShaderLabの方が良いと思われるが、単純なシェーダなら、Shader Graphの方が楽で、作るのも速くなる。 Shader Graphは言語ではなく、「ノード」というブロックを紐でつなげることにより、視覚的にシェーダを作成ができる。 まず、Shader Graphをインストールしましょう。Unityの Package Manger から Shader Gr...
スマホでのゲーム開発
今まで学んだUnityの知識を拡張し、スマホに関する特別な開発方法を新しく勉強しましょう。
ミニゲーム①:Egg Race!
スマホの傾きセンサーとタッチで3Dパズルゲームを作ってみましょう。
ミニゲーム②:ドラゴンレーダー
コンパスと加速度センサーで単純な2Dミニゲームを作りましょう~
プロジェクト仕組みの理解
ゲームの目的 スマホを傾いて、卵を転げて、巣まで届かせましょう!ただ、強くぶつかると、卵が割れてしまうので、優しくね!生まれたひよこちゃんが邪魔するので、ドアをうまく使って、移動制限させましょう! ゲームシーン Scenesフォルダーの中にある「EggRace」を開いてください ヒエラルキーを見ると: Main Camera:ゲームのカメラで、上から真下見るようにしちます: Directional Light:光源 Black:見せたくないステージの一部を黒いバーで隠すためのオブジェクト Stage:ステ...
スマホ機能のまとめ
新入力システム(Input System) タッチ・マルチタッチ 有効化・無効化 using UnityEngine.InputSystem.EnhancedTouch; // 有効化 EnhancedTouchSupport.Enable() // 無効化 EnhancedTouchSupport.Disable() 各タッチのイベント using Touch = UnityEngine.InputSystem.EnhancedTouch.Touch; // 画面を触れ始めたとき Touch.onFin...
卵の操作
これからスクリプトを作成し、卵の動き処理を実装しましょう。 シーン設定 迷路の左上に Prefabs の中にある Egg を入れてください: キーボードによる卵の動き スマホで遊ぶ前に、まずUnityで動作を確認したいので、キーボードを使い、重力の向きを変えて、卵が転がるようにしましょう。 重力を変えるには2つの方法がある: プロジェクト設定で重力を変える 1回だけ重力を変え、後がずっと変わらないなら、プロジェクト設定で重力ベクトルを変えることができる。「Edit ⇒ Project Settings」を開き「...
Unityを使用するスマホの開発
Unityでのスマホ開発:何が異なる? 今まで学んできたUnityの機能は大分に変わらない。物理処理に使う「Rigidbody」、当たり判定に使う「Collider」、サウンド再生に使う「AudioSource」、3Dシーンを見るための「Camera」などはそのまま使える ただし、スマホのゲームを作るには、PCゲームと異なる部分もある: 入力 キーボード、マウス、コントローラーがないため、基本としてタッチの操作でゲームを遊ぶのですが、他の入力も利用できる 加速度センサー:スマホの傾きや動きを取得できる コンパス:...
扉の操作
画面のタッチ機能を使い、指のスライドで、扉を動かしてみましょう。 タッチ機能 加速度センサーと同様に、タッチ機能を使う前には、機能の有効化をしないといけない。Unityでは: // タッチ機能を有効化 EnhancedTouchSupport.Enable(); その次に、タッチのイベントに登録しなければならない: // 画面を触れ始めたとき Touch.onFingerDown += 処理メソッド; // 指は移動中のとき Touch.onFingerMove += 処理メソッド; // 指が画面から放したと...
卵の「体力」
次、卵が強く衝突したら体力が減り、ゼロになったら卵が消える処理を追加しましょう。 スクリプト まず、単純な考え方で、「ぶつけたら、体力が減る」処理をにしましょう。 // 卵の体力 public class EggHP : MonoBehaviour { // ぶつかるときに受けるダメージ [SerializeField] private float hitDamage = 30; // 体力 private float hp = 100; // ...
UIを作成
体力を可視化するため、新しい Canvas を作成し、必要な素材を追加しましょう。Canvasが画面サイズに合わせて自動的にリサイズするように設定しましょう: ゲージの作り方 「スライス(Sliced)」スプライトについて 次の事例について考えてください:セリフ用の枠を作成したいが、文字の数は固定ではなく、長い文章もあるし、短い文章もありえるので、枠のサイズも固定できない。文章に合わせようとして、枠を強制的にリサイズすると… …スプライトが変に伸びてしまい、おかしくみえます。これを解決する...
次々の卵を生成
卵を無事に巣まで届けたら、ひょこが生まれ、ランダムに歩くようにしましょう。 卵を検知する「EggDetector」 まず、卵が巣に届く検知スクリプトを作成しましょう。卵かどか「Egg」というタグで識別すると: // 卵を検知する public class EggDetector : MonoBehaviour { // 検知したら発生するイベント public event System.Action<GameObject> Detected; private void OnTriggerE...
ひょこ生まれ!
ゲームマネージャーを編集し、卵が無事に巣まで届いたら、ひょこが生まれ、ランダムの目的地まで歩くようにしましょう。 ランダムに歩く アイディアとして、ひょこが現在位置からある半径いないのランダム位置を選択する。ただし、その位置がナビゲーションメッシュの中にあること保証できないので、ランダム位置を選択し、そこから最も近いナビゲーションメッシュの位置を求める: このため、Unity の2つの機能を使用 ・単位円以内の ランダム位置 Vector2 point = Random.insideUnitCirc...
プロジェクト仕組みの理解
ゲームの目的 スマホの方位(北・東・南・西)を変えながら、レーダーの向きを変え、加速度センサーを使って、歩調を検知し、前ぽにすすむ。光っているボールを触れたら、消える。 ゲームシーン Scenesフォルダーの中にある「Game」を開いてください ヒエラルキーを見ると: Main Camera:ゲームのカメラで、2Dカメラになっている Background:レーダーのグリッド背景 Guide:中央にある赤い三角形 MapRotation:ボールの回転に使うゲームオブジェクト。これを回転すると、ボールが回転する M...
回転の操作
スマホの方位に合わせて、マップ(ボールのグループ)を回転しましょう。 スクリプト まず、PCで確認できるため、キーボードの A と Dキーで回転しましょう。スクリプトはとても単純である: // レーダーの回転を制御する public class RotationController : MonoBehaviour { // 現在の角度 private float angle; private void Update() { // 回転速度(固定) c...
移動の操作
スマホの加速度センサーを使い、強い湯揺れを検知したら「歩」として検知し、移動処理を追加しましょう。 スクリプト スマホは純粋の万歩計がないが、加速度センサーで動きを検知ができる。「StepDetector」というスクリプトを作成し、歩調を検知しましょう。なお、回転と同様に、まずキーボードを使い、PCで確認できるようにしましょう。 // 歩調を検知する public class StepDetector : MonoBehaviour { // 検知したときのイベント宣言 public event S...