Micomprocedure Wiki
Unityの座標系
をテンプレートにして作成
開始行:
Unityの座標系について
UnityのY軸は画面に対し上が+、下が−である。
そのため画面に対し左上が(0,max),右下が(max,0)になっている。
他の多くのプログラムでは左上が(0,0)、右下が(max,max)になっている。
これは現実世界を反映したUnityの仕様である。
Unityにはこの2つの座標系が混同し存在しているため注意。
例えばRectクラスはBoxを作るクラスである。
Rect(左上x,左上y,横幅,縦幅)として使う。
Rectの(0,0)は左上である。
例えば画面の一部を覆う時
スクリーン座標を取得すると左下が(0,0)だが、覆うためのRectでの指定は左上が(0,0)である。
変換が必要なので注意。
%%また、Camera.main.WorldToScreenPointではy座標が負で取得される?ようだ。%%
%%原因や仕様が見つからなかったため知っている方はコメントをいただけると助かる。%%
追記
2DモードではCamera.main.WorldToScreenPointで負が取得されることはなかった。
スクリーンの一部を覆う処理では以下がある。
#code(csharp){{
public float bottom;
public float width;
public float height;
void OnGUI () {
var leftDown = Camera.main.WorldToScreenPoint(new Vector3(-width / 2, bottom, 0));
var rightUp = Camera.main.WorldToScreenPoint(new Vector3(width / 2, bottom+ height,0 ));
GUI.TextField(new Rect(leftDown.x, Screen.height-rightUp.y, rightUp.x - leftDown.x, rightUp.y - leftDown.y),"Text");
}
}}
WorldToScreenPointで左下と右上を取得し、GUI.TextFieldでは左上のx用に左下のx(leftDown.y)を、左上のy用にスクリーンサイズ-右上のy(rightUp.y)とすることで左下基準の座標を左上基準にしている。
オススメはWorldToScreenPointの拡張メソッドを作り左上基準で取得できるようにすることである。
#comment
終了行:
Unityの座標系について
UnityのY軸は画面に対し上が+、下が−である。
そのため画面に対し左上が(0,max),右下が(max,0)になっている。
他の多くのプログラムでは左上が(0,0)、右下が(max,max)になっている。
これは現実世界を反映したUnityの仕様である。
Unityにはこの2つの座標系が混同し存在しているため注意。
例えばRectクラスはBoxを作るクラスである。
Rect(左上x,左上y,横幅,縦幅)として使う。
Rectの(0,0)は左上である。
例えば画面の一部を覆う時
スクリーン座標を取得すると左下が(0,0)だが、覆うためのRectでの指定は左上が(0,0)である。
変換が必要なので注意。
%%また、Camera.main.WorldToScreenPointではy座標が負で取得される?ようだ。%%
%%原因や仕様が見つからなかったため知っている方はコメントをいただけると助かる。%%
追記
2DモードではCamera.main.WorldToScreenPointで負が取得されることはなかった。
スクリーンの一部を覆う処理では以下がある。
#code(csharp){{
public float bottom;
public float width;
public float height;
void OnGUI () {
var leftDown = Camera.main.WorldToScreenPoint(new Vector3(-width / 2, bottom, 0));
var rightUp = Camera.main.WorldToScreenPoint(new Vector3(width / 2, bottom+ height,0 ));
GUI.TextField(new Rect(leftDown.x, Screen.height-rightUp.y, rightUp.x - leftDown.x, rightUp.y - leftDown.y),"Text");
}
}}
WorldToScreenPointで左下と右上を取得し、GUI.TextFieldでは左上のx用に左下のx(leftDown.y)を、左上のy用にスクリーンサイズ-右上のy(rightUp.y)とすることで左下基準の座標を左上基準にしている。
オススメはWorldToScreenPointの拡張メソッドを作り左上基準で取得できるようにすることである。
#comment
ページ名:
サイト内を検索
AND検索
OR検索
操作メニュー
サークル情報
†
名称
東北大学文化部登録団体
東北大学マイコンプロシージャ
部室
川内北キャンパス内
川内サークル部室棟 4階
416号室
設立
1979年4月1日
(41年前)
活動内容
ゲームの制作・発表等
(
詳細
)
連絡先
こちら
↑
Twitter
†
@micom_procedure からのツイート
このウェブページについて
ここを編集
コンテンツ
†
トップページ
マイコンプロシージャとは?
公開中の作品
その他の作品
資料室
情報室
リンク
部内向けページトップ
最新の20件
2021年01月02日
Inneer/C++_const
2020年09月15日
ProcGameJam10
2020年06月18日
2020年度新歓情報
資料室
ようこそ
2020年05月23日
公開中の作品/2020年度SpringFestival/ハシレ!ギョルイ
公開中の作品/2020年度SpringFestival
公開中の作品
2020年05月19日
マイコンプロシージャとは?
2020年04月29日
公開中の作品/2019年度新入生プロジェクト
公開中の作品/2019年度新入生プロジェクト/(in)visible
公開中の作品/2019年度新入生プロジェクト/Vacuum VS. Bloom
公開中の作品/2019年度新入生プロジェクト/きのこvsたけのこ
2019年10月30日
宝石大復活
2019年08月17日
El Boom Pasa
2019年06月07日
公開中の作品/2018年度新入生プロジェクト
Goose's Phantasmagoria
Magic Airship
2019年04月21日
IdealMemoria
2019年03月11日
Kakomin
ここを編集