タグ

unityに関するpenguin_niisanのブックマーク (36)

  • Unity でプロジェクト外部の参照を追加したい - なつねこメモ

    ここでいう外部の参照っていうのは、 NuGet ライブラリだったり、 .NET Framework には含まれてるけど追加参照が必要なものを指します。 NuGet ライブラリを使う場合 公式ドキュメントでは nuget.org から DL する方法が紹介されていましたが、 いちいち落としてくるのも面倒なので、専用の拡張を導入します。 ここから NuGetForUnity の最新版をダウンロードし、インポートします。 インポートしたらツールバーに NuGet の項目が増えているはずなので、 Manage NuGet Packages から入れたいものを入れてあげれば OK。 この方法で導入した場合、良い感じに csproj にも追記してくれるので楽でした。 追加参照ライブラリを使う場合 System.IO.Compression.dll みたいなのを使う場合は、 csc.rsp を作ります。

    Unity でプロジェクト外部の参照を追加したい - なつねこメモ
  • Chronosを用いたポーズ処理の実装 - ns64's blog

  • [Unity] ポーズ動作をTime.timeScale=0を使わずに実現する(その2)

    前回の記事でTime.timeScale=0を使わずにポーズ動作を実現する方法について書きました。 しかし、Rigidbodyコンポーネントを持ったゲームオブジェクトでは、ポーズしてもそのまま物体をすり抜けて慣性で動き続けてしまいます。 逆にRigidbodyを使わないゲームオブジェクトであれば前回の記事で公開したスクリプトだけでも十分でしょう。 今回はRigidbodyのポーズ動作も考慮したポーズ動作の実現方法について書きます。 結論から言うと、rigidbodyコンポーネントのSleep()、WakeUp()メソッド呼び出しで実現できます。 しかし、上記だけではWakeUp()メソッドの実行時に物体の速度と角速度が0になってしまいます。 この問題を解決するために、WakeUp()呼出し後にSleep()呼び出し前の物体の速度と角速度に戻す必要があります。 これらを考慮することで、綺麗な

    [Unity] ポーズ動作をTime.timeScale=0を使わずに実現する(その2)
  • 【Unity】GameObjectの透明度をコード変更する方法(SpriteRendererを使わない)2D - テクノモンキー(サブ)

    UnityでGameObjectの透明度をコードで変えようとしたらつまづいてしまったのでメモ。 やりたいこととしては、 「未入手のアイテムを半透明の状態にしておいて、アイテムをゲットしたら半透明状態を元に戻す」 ってことです。 GameObjectの透明度を変える方法を調べていたんですが、調べてみると3Dでやる場合の方法ばっかりが出てきてしまいます。。(僕の検索法の問題もある) vend9520-lab.net qiita.com その後、ようやくUnityの2Dでオブジェクトの透明度を変更する方法を見つけたんですが、 Unity2Dメモ2 スクリプトからSpriteの透明度を変える d.hatena.ne.jp やり方的には、GetComponentでSpriteRendererを取得して、colorの値を変えるという方法。 ただ僕が透明度を変えたいゲームオブジェクトは「Hierarch

    【Unity】GameObjectの透明度をコード変更する方法(SpriteRendererを使わない)2D - テクノモンキー(サブ)
  • 【Unity】プレイヤーがダメージを受けた時に点滅させる方法 - テクノモンキー(サブ)

    Unityでアクションゲームを作っているんですが、 「プレイヤーが敵に当たった時、点滅させて一定時間無敵状態にする」っていうのをやってみました。 using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class PlayerManager : MonoBehaviour { private bool isDamaged = false; //敵に当たったか void Start () { //テスト用 isDamaged = true; } void Update () { } void FixedUpdate () { //ダメージを受けた時の処理 if(isDamaged){ float level = Mathf.Abs(Math

    【Unity】プレイヤーがダメージを受けた時に点滅させる方法 - テクノモンキー(サブ)
  • 【Unity】Timescaleを変更しないRigidbodyの時間制御 - 原カバンは鞄のお店ではありません。

    終わりが見えない 総プレイ時間は100時間を超えているのに未だにエルダの王になれない皆さんこんにちは。先日は足場の狭い高い塔を登ったり下りたりで1時間以上を費やし、地下の白いベールを被ったボスの撃破に2時間以上かかりました。時間溶けすぎ。 UnityのTimescale Unityではゲーム中の一時停止などを行うときにTimeクラスのTimescaleの値を変更して各オブジェクトの動作を停止状態にしますが、このTimescaleはシーン内の時間に対して影響を及ぼすので、例えばオブジェクトの動きは止めてもUI等は動いてほしい場合にはTimescaleではなく、別の対処が必要となります。 オブジェクトがDOTweenを使って動いている場合やAnimationで動いている場合などは、それぞれのコンポーネントのspeed値を変えることで停止・加速等を実装できますが、Rigidbodyを使っている場

    【Unity】Timescaleを変更しないRigidbodyの時間制御 - 原カバンは鞄のお店ではありません。
  • 【さらばTime.timeScale】バトルにおける複雑なスピード制御を実現するための設計思想【Unity】 - Qiita

    この記事は サムザップAdventCalendar2022 の12/23の記事になります! はじめに 株式会社サムザップでUnityエンジニアをしているレオです。(Twitter) いきなりですが、皆さんはこんな経験ないでしょうか? 開発中のゲームに一時停止機能やスローモーション機能をつけたいと思ってググってみると、Time.timeScaleについての記事がいっぱい出てくると思います。 ここで少し『スターオーシャン2』のバトルを スピード制御 という点に注目して見てみましょう。(20秒ほどでOKです。) 動画で確認できるスピード制御をちょっと書き出してみます。 特定のスキル演出中は周りを停止している コマンド選択中はUI以外停止している UIは常に動いているものもあれば、止まるものもある スタン中はキャラのアニメーションが停止している それ以外にも、世の中にあるゲームでよくあるスピード制

    【さらばTime.timeScale】バトルにおける複雑なスピード制御を実現するための設計思想【Unity】 - Qiita
  • 【Unity】NavMeshAgentの経路だけを参照して移動処理に利用したお話 | ゴマちゃんフロンティア

    すごく今更ながら、最近Unityの「NavMesh」を触ってみました。 以前私の作ったゲームでは後ろからアザラシがついてきますが、「障害物に詰まり続ける」「前に海 (落下するとダメージ) があっても突撃する」など、その挙動には大きな問題があります。それをNavMeshで解決できないか考えました。 しかしNavMeshAgentの位置はTransformでもRigidbodyでもない、言わば「第3の位置情報」のようなもので、私が今まで作っていた処理との組み合わせがやりにくいです。 そこでNavMeshAgentが計算して出した経路だけを利用できないか考えてみたのが今回のお話です。 やったこと NavMeshAgentで移動しないようにする 普通にNavMeshAgentを使うとエージェントがオブジェクトを動かしてしまうので、パラメータを弄って動かないようにします。 ここを変えても特に経路に影

    【Unity】NavMeshAgentの経路だけを参照して移動処理に利用したお話 | ゴマちゃんフロンティア
  • 【Unity】ポーズ機能をTime.timeScaleを変えずに実装したお話 | ゴマちゃんフロンティア

    今回はUnityの「ポーズ機能」の実装に関するお話です。 Unityでポーズというと、「Time.timeScaleを0にする」といった内容のページが多くヒットします。単純なポーズ機能だけならこれで実現できますが、 ポーズ時にメニューをアニメーションさせながら表示したい メニュー画面でキャラクターをアニメーションさせたい などの場合に「timeScale=0」で実装していると、それらのアニメーションまで止まってしまいます。 それを抜きにしても、Tween系ライブラリのアニメーションやパーティクルまで止まると厳しいので、他のやり方を考えてみた次第です。 ということで、やってみた感じでは「ポーズ時とポーズ解除時にイベントを用意し、各コンポーネントがイベントを登録して通知してもらう」でいけそうです。 デザインパターンでいう「Observerパターン」ですね。 ポーズを管理するクラスの作成 まずは

    【Unity】ポーズ機能をTime.timeScaleを変えずに実装したお話 | ゴマちゃんフロンティア
  • Time.timescaleを変更せずにRigidbodyの一時停止&再開処理【Unity】【拡張メソッド】 - (:3[kanのメモ帳]

    拡張メソッドとは この記事でのバージョン Unity 5.3.0f4 Personal はじめに ゲーム中にオブジェクトを一時停止したい、みたいな場合はよくあると思います。 その時、一番楽なのはTime.timeScaleを0にして時間を止める事ですが、 これをするとtimeScaleが影響している全ての動きが止まってしまうため、 使える場所が限られています。 移動処理をプログラムで記述している場合は、その処理を実行しなければいいため簡単ですが、 Rigidbodyを使っている場合は、移動処理が自動で行われてるためそうもいきません。 isKinematicを有効にすれば、一時停止する事は出来ますが。 rigidbody2D.isKinematic = true; 速度が0になるため、物理運動の再開は出来ません。 なので、今回はRigidbodyの一時停止&再開処理を拡張メソッドで作ってみま

  • 【Unity】シーン遷移時のフェードを自作する - Qiita

    はじめに Unityで普通に画面遷移すると、とても質素で安っぽくなってしまいます。画面遷移時に一瞬だけ暗転するとそれだけで結構いい感じになります。 アセットのようなものもあるみたいですが、それ程難しくない気がしたので今回は自作してみました。 完成イメージ 環境 構成 今回はシーン1とシーン2を用意してここに実装します。スクリプトは以下を用意します。 SceneController:MainCameraにくっつけます FadeManader:暗転パネル用Canvasにくっつけます 一応シーン1は赤、シーン2は青にしてあります。 あとスクショにはありませんが、シーン切り替え用のボタンも配置してあります。 流れ 先におおまかな流れを書いておくと、 1.暗転用のパネルを作る 2.暗転用のパネルを召喚 3.パネルのフェードイン、アウトの仕組みを作る 4.シーン切り替え時にフェードするようにする の4

    【Unity】シーン遷移時のフェードを自作する - Qiita
  • Unityの最強シーン遷移管理フレームワーク『Navigathena』と画面管理の設計思想について解説

    はじめに Unityにおいて、シーンの遷移・管理は開発の中核的な役割を担います。それ故に、適切な設計なしで開発に踏み込むと、複雑で扱いづらいプロジェクトになるリスクが高まります。しかし、効果的なシーン管理の設計と実装をするには、それなりに時間と知識を要します。 この課題を解決するため、「高機能」「拡張性」「堅牢性」を念頭に設計・実装した画面管理フレームワークの 『Navigathena』 をオープンソースライブラリとして公開しました。 [GitHub - mackysoft/Navigathena] 記事では、Navigathenaの特徴や使い方を紹介しつつ、Unityにおけるシーン管理の設計について深掘っていきます。 シーン管理には何が必要か? 実際に、Unityでの開発を行う際、どのような機能や考慮点が必要となるでしょうか? これまでの経験や開発事例を踏まえると、大まかに以下のような

    Unityの最強シーン遷移管理フレームワーク『Navigathena』と画面管理の設計思想について解説
  • 【Unity】一目でわかる! カメラの複数アスペクト比対応3D(全7パターン)|鈴木ジョン@ゲーム開発

    こんにちは、鈴木ジョンです。 今回は、カメラの複数アスペクト比対応についてまとめたので公開します。 今回の記事は、3D用のカメラを対象にしています。 (カメラのProjectionの設定がPerspective) 2D用のカメラ(Orthographic)は次回の記事で。 簡単にできる! カメラの複数アスペクト比対応2D(全7パターン) はじめにパターンごとに比較画像とサンプルコードを用意しました。サンプルコードはカメラにアタッチするなどして使ってください。すべて9:16をベースのアスペクト比としています。 【デフォルト】 高さ固定+幅可変 どの端末でも高さ方向の表示量は同じです。アスペクト比によって、幅方向の表示量が増減します。 デフォルトなのでスクリプトは必要ありません。 幅固定+高さ可変 どの端末でも幅方向の表示量が同じです。アスペクト比によって、高さ方向の表示量が増減します。 pu

    【Unity】一目でわかる! カメラの複数アスペクト比対応3D(全7パターン)|鈴木ジョン@ゲーム開発
  • 【Unity】簡単にできる! カメラの複数アスペクト比対応2D(全7パターン)|鈴木ジョン@ゲーム開発

    こんにちは、鈴木ジョンです。 今回も前回に引き続き、カメラの複数アスペクト比対応についてまとめたので公開します。 今回の記事は、2D用のカメラを対象にしています。 (カメラのProjectionの設定がOrthographic) 3D用のカメラ(Perspective)はこちらから 一目でわかる! カメラの複数アスペクト比対応3D(全7パターン) はじめにパターンごとに比較画像とサンプルコードを用意しました。サンプルコードはカメラにアタッチするなどして使ってください。すべて9:16をベースのアスペクト比としています。 【デフォルト】 高さ固定+幅可変 どの端末でも高さ方向の表示量は同じです。アスペクト比によって、幅方向の表示量が増減します。 デフォルトなのでスクリプトは必要ありません。 幅固定+高さ可変 どの端末でも幅方向の表示量が同じです。アスペクト比によって、高さ方向の表示量が増減しま

    【Unity】簡単にできる! カメラの複数アスペクト比対応2D(全7パターン)|鈴木ジョン@ゲーム開発
  • 【Unity】それは危険! シーン間でデータを安全に共有する方法|鈴木ジョン@ゲーム開発

    こんにちは、鈴木ジョンです。 今日は、Unityのシーン間でデータを安全に共有する方法を、解説していきたいと思います。 なぜこんな記事を書こうと思ったかと言うと、シーン間でデータを共有する方法、これをGoogleで調べても、恐ろしいほど、その方法が出てこなかったからです。 検索して出てくる記事は、なぜか、安全ではない方法ばかりが勧められていました。もちろんその方法でも動くことは動くのですが、バグの原因になってしまったり、テストがしにくかったり、とデメリットも多いです。 安全ではないシーン間のデータの共有方法・staticなオブジェクトを使用 ・DontDestroyOnLoadを使用 ・シングルトンパターンを使用 ・PlayerPrefsを使用 これらの方法はいずれも、どこからでもアクセスできるオブジェクト、すなわちグローバルなオブジェクトを持つ方法になります。 単純です! 簡単です! 楽

    【Unity】それは危険! シーン間でデータを安全に共有する方法|鈴木ジョン@ゲーム開発
  • Unity シーン遷移の機構を作った話 - Qiita

    今回の話 自分が過去に開発したゲーム、及び現在開発しているゲームで利用しているオレオレシーン遷移管理機構の紹介です。 何かの参考になれば。 (こういう「蓋絵」を上に重ねて画面を隠している間にシーン遷移するアレです) シーン遷移管理機構 必要なもの 必須 UniRx : イベント発行、コルーチンのタイミング制御に必要 別のもので代用可能 Easy Masking Transition : トランジションエフェクトの再生に利用 Easy Masking Transitionは有料アセットです。無料で実装したい場合はテラシュールブログさんなどを参考に自分で実装する必要があります。 備えている機能 シーン名を指定して遷移 マルチシーン読み込み シーン間のデータ共有 蓋絵を表示したまま一時停止&任意のタイミングで解除 シーンロード完了イベントの発行 トランジションアニメーション終了イベントの発行 シ

    Unity シーン遷移の機構を作った話 - Qiita
  • タイルマップとの当たり判定を実装する

    検証環境 Windows Windows 11 Unity エディター 2021.3.3f1 入力システムパッケージ 1.3.0 この Tips の前提設定 この Tips の説明の前提として以下の設定を事前に行っています。 入力システムパッケージ (Input System Package) を導入する カメラ(2D)とキャンバスを合わせる この Tips の前提知識 Unity 標準のタイルマップを使用して見下ろし型2Dマップを作成する 衝突処理を標準機能の物理演算で行う (2D) マップ素材の借用について 以下のサイトからお借りしたものを加工しています。 [ねくら]マップチップまとめ 歩行キャラクターの実装 まずはマップと当たり判定を行うキャラクターを実装します。このキャラクターはキーボードのカーソルキーで動かせます。 ただちゃんとした歩行を実装すると長くなってしまい Tips の

    タイルマップとの当たり判定を実装する
  • AddressableでAssetBundleを暗号化して扱う - Qiita

    はじめに Addressable Asset System(以下Addressable)がリリースされてしばらく経ち、普通にAddressableを利用する事例はそこそこ見るようになりました。 今回は、デフォルトのAddressableの仕組みではカバーされていないものの一例として「AssetBundleの暗号化」を取り上げます。 Addressableで暗号化を扱う具体例としてだけでなく、Addressableのオレオレカスタマイズを行うヒントとしてご活用いただければ嬉しいです。 なお、記事で行なった作業内容は以下のリポジトリに上がっています。 環境 想定する読者層 AssetBundleはなんとなくわかる(とりあえず作れる、使える)人 AssetBundleを暗号化したい人 AssetBundleのプロになるとお金になると聞いた人 Addressableについて、何か嬉しいかなんとな

    AddressableでAssetBundleを暗号化して扱う - Qiita
  • Addressable Assets Systemを完全に理解する - Qiita

    はじめに Unite Toyko 2018で紹介のあったAddressable Assets Systemについて、触ってみて完全に理解しよう!という記事です。 講演資料:【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説 Addressable Assets Systemをなんとなく理解する まず全容を把握するには、上記の講演資料をざっと見てみるのが一番良いと思います! ここではもう少し掘り下げ、体系的にまとめてみます。 Addressable Assets Systemでできること 今までのResources & AssetBundleの仕組みと比較して何ができるの?という観点からまとめると、以下のような感じです。 できること 任意の文字列(アドレス)によるアセットのロード ResourcesとAssetBundleを等

    Addressable Assets Systemを完全に理解する - Qiita
  • Unity製アプリにおいてアセットを暗号化する手法 | QualiArtsエンジニアブログ