おもちゃバコ

中身スカスカ♡

Unity: AddForceで慣性なし移動を実現する

こんにち花束
寝ても眠いです.

今回はAddForceで慣性なし移動を実現する方法についての備忘録です.

Unity 2019.4.24f1 Personal


参考文献

今回はなし


動機

慣性なしの移動処理を実現したい

AddForceからMovePosition(this.transform.position)にするか

MovePosition(this.transform.position)は瞬間移動なので壁をすり抜ける

じゃあ,どうにかしてAddForceの慣性を消したい

って感じです.


実装

超簡単でRigidbodyの速度を変えるだけ.


比較

通常のAddForce(慣性あり)
f:id:lambda410:20210516213543g:plain
慣性がありますね(当たり前).

MovePosition(瞬間移動)
f:id:lambda410:20210516214101g:plain
移動量が小さいときは壁ぬけしませんが,大きくなると壁ぬけしますね.

実装したAddForce(慣性なし)
f:id:lambda410:20210516214344g:plain
慣性がなく,壁抜けも起きていません.
今のところ,この実装で困ったことにはなっていないのでたぶん大丈夫だと思います(本当か?).


まとめ

簡単な実装でAddForceの慣性を消してみました.
Google検索ではAddForceの慣性をなくす記事はなかなか見つからなかったので,誰かのお役に立てれば幸いです.