暇つぶし2chat GAMEDEV - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト1000:名前は開発中のものです。 15/04/15 13:50:29.67 Je0O0Ma9.net たとえば比較的リアルな一人暮らしの部屋を作る場合、 テクスチャって何枚くらい必要になる? 家具とか小物を含まない「建物」だけで 一枚食いそうなんだけど、これで普通� 1001:ネの? 1002:名前は開発中のものです。 15/04/15 15:54:02.80 T/Z/mKN0.net 画像の大きさもあるし、どういう構成で作ってるかも解らんから答えようも無い。 1003:名前は開発中のものです。 15/04/15 15:54:24.02 vk5h88NI.net ここはUnityのスレなんだけど 1004:名前は開発中のものです。 15/04/15 17:24:44.15 tBaLFKbu5 質問がよくわからないのでエスパーすると、関数名がUnityEngine.EventSystemsのハンドラなのでUIの話だと推定する。で、座標計算がおかしいのはルートCanvasのRenderModeが[Screen Space - Overlay]だからだな多分。 まず座標系の変換はRectTransformUtility使うべし。第一引数のCameraは[Screen Space - Overlay]ならnull、それ以外なら所属するCanvasのworldCameraを使うこと。 以下書き直してみたサンプル。 public Vector3 prevPos; public float fitHeight = 120;//フィット先指定は面倒なので簡略化 public void OnBeginDrag(PointerEventData ped) { //開始時の座標をワールド座標で保持 prevPos = RectTransformUtility.WorldToScreenPoint(null,ped.position); } public void OnDrag(PointerEventData ped) { //現在の座標をワールド座標で取得 Vector3 current = RectTransformUtility.WorldToScreenPoint(null,ped.position); Vector3 movement = current - prevPos;//移動量は前の座標と現在の差分 Vector3 moveTo = transform.position; moveTo.y += movement.y;//Y移動量を加える transform.position = moveTo; //現在の座標をワールド座標で保持 prevPos = current; } public void OnEndDrag(PointerEventData ped) { //ピクセルで指定した場合のスクリーン座標で考える Vector3 setpos = RectTransformUtility.WorldToScreenPoint(null,transform.position); //適宜フィット先を決める setpos.y = Mathf.Round (setpos.y/fitHeight)*fitHeight; transform.position = RectTransformUtility.WorldToScreenPoint (null, setpos); } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch