テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

物理演算

【Unity】UnityPhysicsで、オブジェクト同士が接触した判定を取得する

物理演算でオブジェクト同士が接触した時のイベントを発行する方法についてです。 なお、現段階では明らかに低レベルAPIのみしか提供されておらず、未完成です。 この記事は「今すぐ触ってみたい」という人向けで、正直あまり有益ではありません。 接触イベ…

【Unity】GameObjectでもUnity Physicsを使う

試しにRoll a BallをUnity Physicsで作ってみた所、このテクニック無しだと少し面倒な所があったので紹介。 GameObjectでUnity Physicsを使う キャラクターが消えるのを解決する キャラクターが動かない問題を解決する GameObjectでUnity Physicsを使う Unit…

【Unity】新しい物理演算、Unity Physicsについて

Unity Physicsについて紹介します。 Unity Physicsとは? 事前準備 とりあえずシーンを用意 Unity Physicsに移行 ステージのような大量の当たり判定のある物を一気にロード 新しく増えた設定を使いたい パフォーマンス コード制御関係 関連 Unity Physicsと…

【Unity】Multi-Scene Physicsで、物理演算の世界を分割する

Unity 2018.3の目玉機能(???)の一つである物理演算周りの更新、その一つであるMulti-Scene Physicsについてです。 Multi-Scene Physics PhysicsScene単位で物理演算の速度を変化させる PhysicsScene単位でRaycast 使い方 面白い機能だね!どんな時に使えるの…

【Unity】Auto Sync Transformと移動時の判定、それと注意点

たぶん2017.2辺りからAuto Sync Transformという項目が追加されました。 この設定はパフォーマンスの観点からOFFが推奨ですが、ONにすべきタイミングもあるかもしれないので、その辺り少し紹介です。 Transform変更時に即座にColliderに反映させるAuto Sync …

【Unity】Timelineで物理演算のような動きを使いたい

今回はTimelineで物理演算のような動きを再現するアプローチについてです。 物理表現的な動きをTimelineで使いたい 物理演算の動きをAnimationClipに変換してしまおう GameObjectの動きをレコードする Timelineに使用する Rigidbodyとか、その辺りを全て外す…

【Unity】Timelineで物理演算の動きを使用するアイディア

今回はTimelineで物理演算の結果を使用する方法について考えてみます。 Timelineという機能 Timelineはゲームを再生しないから効率的 物理演算の動きはゲームの再生を要求する Timeline上で物理演算を動かす 物理演算の動きをAnimationClipに保存する Timeli…

【Unity】物理演算を指定秒数 進める Physics.Simulate

今回は「シーンの物理現象をシミュレートする」という、一見分かりにくいAPIのPhysics.Simulateおよび Physics2D.Simulateついてです。 物理演算を指定秒数進めるAPI 物理演算を進める 物理演算を指定秒数進める・巻き戻す 未来予測 感想 関連 物理演算を指…

【Unity】Polygon Collier 2Dの頂点を調整する

今回は2DのPolygon Collier 2Dの頂点を調整する方法についてです。左の絵が右のようにスッキリします。 Polygon Collier 2Dの頂点は解像度で決まる 判定を調整したくなるケース コライダーを調整する Polygon Collier 2DのEdit Collier Edit Physics Shape …

【Unity】キャラクターの向きをマウスのある方向に向ける(2D/3D)

今回は上から視点で、マウスのある方向にキャラクターを向けようと思います。 マウスの位置にキャラクターの向きを変える サバイバルシューターから学ぶ 地面からColliderを取っ払う 2Dの場合でも同じようにしてみる 2Dって画面だけで向きとれるんじゃね…? …

【Unity】アニメーションと物理演算を連動させる 5.6以降

以前、アニメーションと物理演算を連動させる方法について紹介しましたが、Unity 5.6でもっとシンプルになりました。 tsubakit1.hateblo.jp Animate Physicsなる機能 Unity 5.6のアップグレードガイドを眺めていると、少し気になる項目がありました。 docs.u…

【Unity】当たり判定の有無や形状、物理演算の状態を視覚的に確認する Physics Debugger【5.6】

物理演算を使用している際に、現在Rigidbodyがスリープしているかや物理演算に使用するコライダーの形状等を確認したく鳴る事があります。 Unity 5.6で、そういったケースで便利なPhysics Debuggerが追加されたので、少し紹介します。 Physics Debugger 実際…

【Unity】NavMeshとRigidbodyを連携して動かす

今回はNavmeshで動かすキャラクターを一時的に物理演算で動かしてみます。 UnityのNavmesh(経路探索AI)はNavmeshAgentというPhysicsとは異なった力によって動きます。その為、PhysicsとNavmeshを連携させる場合、少々面倒な事になります。 Navmeshの移動 N…

【Unity】物理演算とAnimationで物を投げてみる

昨日の続きで、物理演算で動くオブジェクトをAnimationの力で投げてみました。 理屈 作業 飛距離は投げる速度次第 関連 理屈 tsubakit1.hateblo.jp 作業 まず投げるオブジェクトを用意しました。回す際にはPivotモードで動かすと楽です。 pivotの中心点と全…

【Unity】アニメーションと物理演算を連動させる

試したら出来てしまったので、一応メモします。 物理演算とアニメーション Animationに物理演算の力を追加 実際にやってみる Physics2Dでは少し手法が異なる 関連 物理演算とアニメーション Unityを初めて作った人がよくやる事が、物理演算ベースで作成した…

【Unity】Rigidbody2Dの新しい設定「Dynamic」「Kinematic」「Static」と「Simulated」の使い分け

Unity 5.5からRigidbody2Dの表示が新しくなり、新しいパラメータも追加されました。その内容が凄く分かりにくいので、確認がてらメモします。 「Dynamic」「Kinematic」「Static」 KinematicとUse Full Kinematic Contacts Staticは動かさない、動けない Sim…

【Unity】Rigidbody2Dがスリープになったかどうか確認する

物理演算はスリープしてCPUを節約する 物理演算は複雑な当たり判定と物理的な動作のシミュレーション(再現)を行います。ただゲームのCPUにも限度という物があるため、物理演算はたいてい接触しない・動かないオブジェクトはスリープ状態へ移行する機能を持…

【Unity】物理演算で動かすオブジェクトが壁を貫通する問題と対策

キング・クリムゾン! 『キング・クリムゾン』の能力では、この世の時間は消し飛び・・・・・・そして全ての人間は、この時間の中で動いた足音を覚えていないッ! 当たり判定を弾が貫通する 対策1(補完回数を増やす) 対策2(Collision Detectionを使う) Collis…

【Unity】SphereCastやBoxcastで、球や箱のあたり判定が通過できるか判断する

今回はRaycast以外の判定、SphereCastやBoxcastについてです。 足場に微妙に乗ってる時とRaycast BoxCastとSphereCast BoxCastとSphereCastの死角 関連 足場に微妙に乗ってる時とRaycast ゲームを作っていると、接地判定や落下判定のために「太い線判定」を…

【Unity】コライダーに特定の機能を追加するEffectorで少し遊んでみる

Unity 5で新しく追加された2D向けEffectorで色々と遊んでみました。 Effector Surface Effector 2D Point Effector 2D Area Effector 2D Buoyancy Effector 2D Platform Effector2d Effector Effectorは2Dと付くColliderに対してエフェクトを追加する機能で…

【Unity】Rigidbody2DとJointで、物理パズルみたいなやつ

何となく以前に作ったロケットをRigidbody2Dでリメイクしました。素材やアセット・スクリプトは使用せず、全てアリものだけで作っています。 以前はRigidbody2DのJointにBreakable設定やConstant Force2Dが無かったのでRigidbody2Dでは作れませんでしたが、…

一方通行のコライダーを設定する、Platform Effector 2D #Unity

Platform Effector 2Dは、一方通行の当たり判定が設定できるコライダーのエフェクターです。 例えばマリオやロックマンでよくある、下からの通過は可能だが上から降りた時は止まる、一方からの攻撃は通すが反対からの攻撃は通さない等の挙動が、LayerやTrigg…

Unity5の物理演算で塔を倒壊させる試み

Unity5で物理演算のパフォーマンスが上がったそうなので、Cubeを破壊する奴を作成してみました。赤い玉を白い塔にぶつけて粉砕しているイメージです。 塔を破壊するために行った操作 これは非常に単純な仕組みで実現しています。要するに、CUBEを用意してお…

ユニティちゃんのおっぱいとか髪とかを揺らす仕組みの設定方法について

目次 目次 はじめに 揺れもののギミックについて 揺れる対象の設定 揺れものの順番を制御 スカートや髪のめり込み対策 はじめに 今日はユニティちゃんの髪とか胸とか、そういった揺れものパーツを揺らすギミックについて解説します。 ユニティちゃんライブ公…

プロ生ちゃんの髪やスカートをユニティちゃんの揺れものでセットアップしてみた

ふと思って、プロ生ちゃんをユニティちゃんに使っているシェーダー及び揺れものでセットアプしてみました。実は先週勉強会があり、ちょっと気になっていたのです。 セットアップ済みのプレハブを追加するunitypackageを用意したので、サクッとセットアップ済…

Unityで接触したブロック達を吹っ飛ばす

物理演算的には正しくなくとも、表現的に物体がぶつかった時にふっとばすのはよくある事だ。また爆弾等でふっ飛ばしたい場合もある。そんな時は「周囲のコライダーを全部持ってきて、その中でrigidbodyがあるオブジェクトに対してAddForceを実行」みたいな事…

rigidbodyの落下位置を予測するには…

剛体の落下位置を物理学で予測する。 powerの分だけ左にふっとばす感じのソースコードを用意。rigidbody2dでもrigidbodyでも良い。rigidbody.AddForce(Vector3.left * power, ForceMode.Impulse); もしくは rigidbody2D.AddForce(Vector2.right * -power, Fo…

物理演算のスリープについて

今回は物理演算のスリープについてです。Unityでは動作しないオブジェクトはスリープさせ物理演算の処理をスキップする機能があります。これは単純に動いていない物の物理演算を計算するのは無駄だからです。スリープ状態へは、ある一定の運動量を失った場合…