[過去ログ]
【3Dゲームエンジン】Unity質問スレッド14 [転載禁止]©2ch.net (1001レス)
【3Dゲームエンジン】Unity質問スレッド14 [転載禁止]©2ch.net http://peace.5ch.net/test/read.cgi/gamedev/1418120993/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
336: 名前は開発中のものです。 [sage] 2014/12/22(月) 07:23:11.99 ID:6wTlTTx9 >>334 どうおかしくなっているのか、がわからんので明確なことは言えないが ScreenToWorldPointはスクリーン上のXYポイントを ワールド上でカメラからみた、カメラの方向に向かった距離(深度)に変換する。 ttp://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html "The z position is in world units from the camera." Unityのシーンビューでカメラをつかむとパースペクティブになっていれば 四角錐のオブジェクトが示されるがこれがカメラが写す範囲だということはわかるだろう。 ScreenToWorldPointはカメラから見た点がこの四角錐の中のどこにあるのかを割り出すものだ。 そしてカメラからの距離が0、ということはこの四角錐の中での位置は その頂点、カメラの位置、以外の場所ではあり得ない。 従って何をしても返ってくる位置はカメラ位置になる。 おかしい、というのがそういうことならそういうこと。 ただこれには例外があってそれはカメラがOrthographicになってる場合で この場合には意図した位置がかえってくる、はず。 http://peace.5ch.net/test/read.cgi/gamedev/1418120993/336
342: 名前は開発中のものです。 [sage] 2014/12/22(月) 19:50:50.67 ID:6wTlTTx9 >>339 厳密さの問題はあるし最後のフレームだけは完全に等速とは いかないがLerpでもできるしなんとでもなるだろう。 何がやりたくてどんなコード書いてんのかわからなけりゃなんともいえんよ。 例えば (略 float speed=3f; public Vector3 targetPos=new Vector3(100,100,100); void Update(){ Vector3 distance=targetPos-transform.position); if(distance.magnitude>speed*Time.deltaTime) transform.position=(targetPos-transform.position).normalized*speed*Time.deltaTime; else transform.position=targetPos; } とかか?lerp使うのは (略 float speed=3f float spCoef,posRate; Vector3 prePos,lastPos; void Start(){ prePos=transform.position; lastPos=new Vector3(100,100,100); spCoe=1/((lastPos=prePos).magnitude/speed); posRate=0; } void Update(){ posRate=((posRate+Time.deltaTime*spCoef)<1)?posRate+Time.deltaTime*spCoef:1; transform.position=Vector3.lerp(prePos,lastPos,posRate); } とかか?まぁlerp使うのは妙っちゃ妙かもな〜。ちなみにテストはしてないので多分なんかおかしい。 とにかくコードは書いとけ。わからんし。 http://peace.5ch.net/test/read.cgi/gamedev/1418120993/342
344: 名前は開発中のものです。 [sage] 2014/12/22(月) 21:27:27.67 ID:6wTlTTx9 >>343 あ〜、ナルホドね。まぁああいうのは基本的に固定ハードなんで フレームごとにどれだけ、とか動かしてやればいいんだけど Unityの場合はマルチプラットフォームでフレームレートも 可変レートが原則だから等速的なことをしたかったらTime.deltaTimeを使うのがセオリー。 デルタタイムは要するにそのフレームにかかった時間を掛けてくれる。 1fpsだったら1、60fpsだったら1/60 ってこと。 Untiyでやるときはフラグもってキーが入ったら方向取得してフラグ立ておく。 Update内とかでフラグチェックして立ってたら移動関数実行して 移動関数内で到着確認できたらフラグを折る。 とかやっとけばいいんじゃねぇかな http://peace.5ch.net/test/read.cgi/gamedev/1418120993/344
347: 名前は開発中のものです。 [sage] 2014/12/22(月) 22:19:44.77 ID:6wTlTTx9 誰かしてた人もいるらしいがさほど害でもないしなぁ タマにくすっとさせられてそれにいらっと来るとかその程度でw http://peace.5ch.net/test/read.cgi/gamedev/1418120993/347
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.050s