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日
(44年前)
活動内容
ゲームの制作・発表等
(
詳細
)
連絡先
こちら
↑
Twitter
†
@micom_procedure からのツイート
このウェブページについて
ここを編集
コンテンツ
†
トップページ
マイコンプロシージャとは?
公開中の作品
その他の作品
資料室
情報室
リンク
部内向けページトップ
最新の20件
2023年05月25日
ContactUs
2022年11月03日
公開中の作品/2021年度新入生プロジェクト/Gravity-Lost
公開中の作品/2021年度新入生プロジェクト/はるさがし
2021年12月13日
公開中の作品/2021年度新入生プロジェクト/落単・タイム・アタック!
公開中の作品/2021年度新入生プロジェクト/神社からの脱出
RecentDeleted
公開中の作品/2021年度新入生プロジェクト/THE Unexpected Fighting Operation
公開中の作品/2021年度新入生プロジェクト
2021年12月03日
公開中の作品/2020年度新入生プロジェクト/城熊
公開中の作品/2020年度新入生プロジェクト
2021年07月18日
公開中の作品
ProcGameJam9
Inneer/C++_const
2021年04月18日
公開中の作品/2020年度新入生プロジェクト/CrossFade
2021年04月17日
2021年度新歓情報
公開中の作品/2020年度新入生プロジェクト/TeamC no game
2021年04月07日
ようこそ
公開中の作品/2020年度新入生プロジェクト/トキノカダイ
2021年04月04日
2020年度新歓情報
2020年09月15日
ProcGameJam10
ここを編集