タグ

ブックマーク / qiita.com/flankids (11)

  • [Unity]3Dモデルを凍らせる表現 - Qiita

    状態異常「凍結」みたいなものが必要になったので、実装してみました。 ぶっちゃけ、表現としては大きめの半透明の氷のオブジェクトの中に入れてしまえば簡単だと思います。 しかしこの表現は凍らせたいオブジェクトの大きさや形状が様々な場合、無理な引き伸ばしが必要だったり、体の一部がはみ出たりすることがあります。 また、凍らせる対象が画面にたくさんいる時は表示するオブジェクトを増やすコストが気になりますし、むやみに半透明オブジェクトを表示させるのも考えものです。 そういう懸念への対策として作ってみたシェーダーでした。 シェーダー全文 ---------------------------------------- Freeze.shader(折りたたみ) ------------------------------------------ Shader "Custom/Freeze" { Proper

    [Unity]3Dモデルを凍らせる表現 - Qiita
  • [Unity]透明な板ポリゴンに影を落として2D背景に3Dキャラを馴染ませる - Qiita

    背景を一枚絵にしたい! やってみました↓ 2D背景x3Dキャラの組み合わせは初代プレステのRPGでよく見た気がします。 背景に描画コストを高く割けないけど、広い空間を表現したい・・・という目的だったんじゃないかなーと思います。 ▲クロノ・クロスの美しい背景 マシンスペックが上がり、3Dモデルの製作ツールも充実してきた現代では見る機会が減りましたが、小規模開発では製作コストを削減するなどのメリットもありそうだなと思い、作ってみました。 実装 まず、新規作成したUnlitシェーダーから不要な処理を削って色を指定するだけのUnlitシェーダーを用意します。 下記シェーダーをベースに処理を書いていきます。 Shader "Custom/TransparentShadowReceive" { Properties { _Color ("Color", Color) = (1, 1, 1, 1) }

    [Unity]透明な板ポリゴンに影を落として2D背景に3Dキャラを馴染ませる - Qiita
  • [Unity]GitHub Pagesで手軽にスマホゲームを公開する - Qiita

    グレンジ Advent Calendar 2022 2日目担当の、flankidsです。 普段はインプット管理、カメラワーク作り、アニメーション制御などなどで遊び心地を作ることを主にやってるエンジニアをしています。 最近はゲームのモックアップを作ることが多いのですが、モバイル向けのアプリのビルドや公開って手順が多くて大変ですよね。 ささっと作ったオモチャみたいなゲームとか、インタラクティブなコンテンツのデモとかを公開したくなった時に小回りの効く手段を持っておくと便利だな〜と思い、今回はその選択肢のひとつとしてGithub Pagesでの公開方法を調べたのでまとめてみました。 もしお役に立てたら、LGTM(いいね)やストックをしてもらえるとスゴく嬉しいです! こんなかんじで遊べます WebGLビルドを公開して、PCでもブラウザでも気軽にアクセスしてすぐ触れるものを公開できます。 GitHub

    [Unity]GitHub Pagesで手軽にスマホゲームを公開する - Qiita
  • [Unity]Cinemachineを使わないお手軽なカメラワーク設計 - Qiita

    例えば、CameraChildを動かすことで被写体に寄ったり離れたり、CameraParentを回すことで被写体を好きな位置から見ることができます。 スクリプトでパラメータを管理 カメラのビューを作る各種オブジェクトにいちいちアクセスするのは大変なので、パラメータを一元管理できるようスクリプトを用意します。 using System; using UnityEngine; // シーンを実行しなくてもカメラワークが反映されるよう、ExecuteInEditModeを付与 [ExecuteInEditMode] public class CameraManager : MonoBehaviour { /// <summary> カメラのパラメータ </summary> [Serializable] public class Parameter { public Vector3 positio

    [Unity]Cinemachineを使わないお手軽なカメラワーク設計 - Qiita
  • [Unity]URPで始める!シェーダー入門 - Qiita

    シェーダーをいつかちゃんと勉強しなきゃと思ってる間に、UnityのアプデでSRPが出た!とか描画に関する大きな進歩があったみたいで、これはいよいよ後回しにしてると追いつけなくなるぞと思い、話題の HLSLシェーダーの魔導書 を読み始めました。 ▲この 当にイチから説明があり、シェーダー初心者の自分にも分かりやすいです! ただ、このはあくまでHLSLシェーダーで、サンプルコードはWindowsアプリケーション上で動かすように作られているため、そのままUnityで記述することはできません。(アルゴリズムや基的な関数などは丸々参考にできます。誤解なきよう) また、Unityには独自に用意されたHLSL関数群があり、例えばライトの取得などの方法も当然こので記載されてるものと異なります。 ということで、 で得たシェーダーの知識をUnityで実装をしてみる 次世代モバイルの標準になるU

    [Unity]URPで始める!シェーダー入門 - Qiita
  • [Unity]聖剣3TOMのキャラの「アナログ感」シェーダーを模写してみた - Qiita

    先月、聖剣伝説3 TRIALS of MANA のスマホ版がリリースされました。 スーファミ版リアルタイム世代なのもあって楽しく遊んでます! フレームレートの安定ためにコンシューマ版に比べて一部ポストエフェクトを切っていたり色域が違うように見えたりと、細かに調整されていて、スマホでもスムーズに遊べていて感動です・・・。(コンシューマ版開発時点でスマホ対応も構想に入っていたらしい) 聖剣3TOMを遊んでいて印象的だったのが、光沢を感じるような独特の陰影の付け方でした。 「何かグラフィックに関するインタビューとかないかなぁ」と探したところ、 UNREAL FEST EXTREME 2020 WINTER でドンピシャな講演をされていたようで、そのアーカイブが見つかりました!(36:07〜) ありがたや…。 講演の中でシェーダーに関する細かいお話があって良い足がかりになったので、聖剣3TOMのキ

    [Unity]聖剣3TOMのキャラの「アナログ感」シェーダーを模写してみた - Qiita
  • 敵のダメージリアクション・バリエーション - Qiita

    バトルがあるゲームの爽快感の重要な要素といえば、やっぱり敵のリアクションです(断言) 3Dゲームにおける敵のダメージリアクションといえば、ダメージモーションを再生するのが一般的・・・と思いきや、ダメージモーションって地味に取り回しが悪いですよね。 確かにリアクションとしては一番丁寧な演出なのですが、モーションを流す以上、攻撃や移動などのモーションを中断しないといけないので演出の充実として実装するにしてはゲーム仕様側への影響が大きく、気軽に入れるわけにはいけません。 そんなわけで一般的にはダメージモーションは大技を当てた時や、部位破壊的な特殊な状態になったときなど、「仕様に伴う特別な演出」で再生されることが多い印象です。 とはいえ一番頻度の高い「小さなダメージを与えた時」の演出が無いと爽快感がないどころか、攻撃が効いてるのかどうか分からない、なんてことになりかねません。 ↑効いてる?弾かれて

    敵のダメージリアクション・バリエーション - Qiita
  • [Unity]スマホゲームでゼルダっぽい3Dカメラ挙動の研究(1/3) - カメラ設計 - Qiita

    スマホゲーのカメラの不満 ちょっと前までは、パズル&RPG的なゲームばっかりだと思ってたら、いつの間にかガンガン動くアクションゲームがドンドン出ています。 けど、エフェクトとかカメラ効果はキレイだったりするけど、いざプレイするとカメラが固定角度だったり、引き気味での表示だったり、視界変更は移動とは別操作だったりと、どれもスマホならではアクションゲームのカメラ挙動の確立に苦戦してたり、割り切ってしまってたりするように思います。(インストールしてみてガッカリ…という経験ある人も多いのでは) 処理負荷やリソース量を抑えるために背景を特定の角度からしか映せない!という事情もあるかもですが、やっぱりスマホでもいろんな視点からモノが見えるビューを実現したい! ということで、 スマホでも無理なくできる操作量で 観たい場所に無理なくカメラが動き 自由度の権化であるゼルダっぽい移動とカメラ が実現できるかを

    [Unity]スマホゲームでゼルダっぽい3Dカメラ挙動の研究(1/3) - カメラ設計 - Qiita
  • [Unity]3D空間上に表示する距離・角度の影響を受けないUI - Qiita

    やりたいこと ゲームで3D空間上に表示するUIで、下記条件を満たすUIを作りたかったので、試行錯誤しました。 仕様 特定の3Dオブジェクトに関するUIを、そのオブジェクトより必ず前面に表示されるようにしたい カメラとの距離・角度に関係なく常に同じサイズ・角度でUIを表示したい つまりどういうことかというと、 こんな感じの、特定の3Dオブジェクトに追従するUIに使うのに必要でした。 問題点 仕様2を満たすだけなら、Camera.WorldToScreenPointを使えばすぐですが・・・ 当然ですがCanvasに普通にUIを配置すると、こんな感じに表示類が必ず前面に出てしまうため、カメラワークやオブジェクトの配置によっては、 ▼敵への照準なのにプレイヤーより前に出てしまう ▼壁の向こうにいる敵が事前に分かってしまう というような問題が出てしまいます。 ※逆にこういうのが問題にならないゲーム

    [Unity]3D空間上に表示する距離・角度の影響を受けないUI - Qiita
  • [Unity]CPU負荷 備忘録 - Qiita

    最近行った負荷対策と、それぞれの効果について簡単にまとめました。 ※効果については、基的にプロジェクトによりけり。自身のケースではどのくらいだったかを基準にしてます GetComponentの呼び出しを抑える(効果:大) 取得したインスタンスを変数にキャッシュして、呼び出しを最低限に抑えること。 特に、Update内やfor文内で呼ばれるとかなりな処理時間に。メソッド内で使う場合、気付き辛いので注意。 Distanceやmagnitudeなど、距離やベクトルの長さの計算改善(効果:大) 必然性が無ければ、極力使わないほうがよい。 例えば、2点間の距離の比較であればsqrMagnitude同士を比較することでも可能で、 sqrMagnitudeはmagnitudeやDistanceにくらべ、√の計算をせず、2乗した値のままであるため負荷が低い。 transformのposition、eul

    [Unity]CPU負荷 備忘録 - Qiita
  • [Unity]GPU負荷 備忘録 - Qiita

    GPU負荷の原因はいろんな要素が原因に考えられます。 一般的にドローコールやモデルのポリゴン数を減らすことで負荷を下げていきますが、 先にそもそもの設定を見直すことを推奨 します。 設定の難易度と効果を加味して、おすすめの対処順に紹介していきます。 1. 解像度を下げる 2. ライトを減らすorなくす 3. 半透明のモデルを減らすorなくす 4. ドローコール(SetPassCall)を減らす 5. ポリゴン数を減らす 6. その他 解像度を下げる Android端末は、iOSに比べて GPUが弱めの割に、解像度はやたら高い ものが多いです。 綺麗な写メを高解像度で表示するのには優れていますが、常に画面を更新するゲームにとっては不都合な設計です。 対策として、表示解像度を落とすことでGPU負荷を抑えられます。 ただし、 UIは解像度の変化による見栄えの劣化が目立ちやすい ので、おすすめはレ

    [Unity]GPU負荷 備忘録 - Qiita
  • 1