You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Unityの座標系は複雑だなぁという話。 Unityでこんな機能を実装したかった。 画面をクリックした位置に文字を表示させたい。文字はuGUIのTextを使って表示し、クリックした座標にTextのTransform.positionを書き換えれば良い。しかしそれだと、画面端のあたりをクリックすると文字が画面外にはみ出してしまう。文字が見きれる場合には、見切れないように表示する座標を補正したい。図にするとこんな感じ。 こういうことがやりたかったのだけど、どうやるのがベストなのだろうか。 とりあえず以下の情報があればできるはずであると考えた。 クリック位置の座標 Textの枠の左下と右上の座標(別に左上と右下でもいいけど) 表示できる座標の範囲 クリックした座標から、テキストの枠の左下と右上の座標を算出し、その座標がスクリーンの表示可能な座標外に出ているのであれば、はみ出してる分だけテキストの
ゲーム全体をポーズしたいとき、Time.timeScale=0としてゲームの進行時間を停止すれば簡単に実現できます。 しかし、アニメーションの動作も停止してしまい、ポーズ中に別のアニメーションを動かしたい場合に問題となってきます。 手動で無理やり動かすことも不可能ではないですが・・・ そこで、今回はTime.timeScaleの値を弄らずにポーズ動作を実現する方法について紹介します。 基本的な考え方は、「レンダラ以外のコンポーネントを無効にする」ことです。 アニメーションやコライダー、スクリプトなどのUpdate動作を持つコンポーネントを無効にすると、Update()が呼び出されなくなり、結果として動作を停止させることが出来ます。 レンダラを無効にしないのは、レンダラを無効にするとオブジェクトそのものが描画されなくなってしまうためです。 これらのUpdate()を持つコンポーネントはBeh
目次 目次 3つの座標系 スクリーン座標 ワールド座標 ビューポート座標 各座標系を使用するケースと変換 WorldToViewportPoint ScreenToWorldPoint ViewportToWorldPoint 関連 3つの座標系 Unityの使用するカメラでは、3つの座標系があります。すなわち「スクリーン座標」「ワールド座標」「ビューポート座標」です。 スクリーン座標 解像度と一致します。例えば640x480の場合、左が0で右が640です。ピクセルパーフェクトで座標を指定したい場合、この値が基本となります。 マウスの座標はスクリーン座標で取得しているため、マウスの値を他の2つへ変換したい場合、この値が基本となります。また、OnGUIはこの値が基本値です。 ワールド座標 3D空間内の座標の事を指します。例えば pos(x:0, y:0, z:0)のような形で、特定のオブジェ
UnityのDebug.Logは、製品化したときもログを吐いてしまいます。 AndroidなどでLogcatすると割と誰でもログを見れてしまうので、できれば製品版では無効化しておきたいところ。 また、Debug.Logは実はかなり負荷が高いです。一度に何十というログを出したりなどしていると、実機になった途端に謎の処理落ち頻発とかになります。「Unityじゃなんともなかったのに!なんでガクガクなの?」とかなったら疑ってみると良いかと思います。 さて、実際にログを消そうとしても、一つ一つコメントアウトしたり必要になるたびに戻す…というのは大変です。自分も困って悩んでたんですが、良いやり方を聞いたので、紹介します。 2016/7/28更新 紹介していたやり方が古かったので、新しいやり方をまとめました。 2020/6/28更新 無効化されるわけではない点が間違っていたので修正しました。 Playe
HUDのように、UIをキャラクターの上に表示する方法について、少し悩んだのでメモします。 World SpaceとScreen Spaceについて World座標をUIの座標へ変換する World Space を Screen Space Overlayへ World Space を Screen Space Cameraへ World SpaceをWorld Spaceへ ScreenSpace Overlayを他の座標系へ変換する UIの座標をWorld Spaceに変換する 関連 World SpaceとScreen Spaceについて UIを考える場合、二つの座標系について考える必要があります。つまりWorld SpaceとScreen Spaceです。 World spaceは3D空間上の座標で、XYZで指定します。この座標は世界の中心点(x:0, y:0, z:0)を基準にした
using UnityEngine; using System.Collections; /// キャラクター基底クラス. /// SpriteRendererが必要. [RequireComponent (typeof(SpriteRenderer))] public class Token : MonoBehaviour { /// プレハブ取得. /// プレハブは必ず"Resources/Prefabs/"に配置すること. public static GameObject GetPrefab (GameObject prefab, string name) { return prefab ?? (prefab = Resources.Load ("Prefabs/" + name) as GameObject); } /// インスタンスを生成してスクリプトを返す. public
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く