gutishin

あなたの人生を少し面白く

自作でアプリを作る活動をしています。よかったら遊んでみてください

Unity Spring jointを”C#"で作ってみた

spring jointとはばねのような動きが再現できる便利な機能である。便利だけど中身が知りたい!C#で書きたい!と思って今回試しに作ってみました。

※筆者は物理学科出身ではありません。あくまでも参考までに、

 

f:id:gutishin:20200125174346p:plain

 

  1. Spring Jointとは
  2. 主な仕組み(ばねの式)
  3. C#で実装 
  4. 上のプログラムの使い方

 

                                                                                                                

Spring Jointとは

f:id:gutishin:20200125125359g:plain

Unityでは有名な機能の一つであるSpring jointは上のようなばねの動きを簡単に表現できます。また、ばねの強さ長さを簡単に決められてとても便利です。使い方に関しては以下のリンクを参考にしてください。

docs.unity3d.com



                                                                                                                

主な仕組み(ばねの式)

f:id:gutishin:20200125131844p:plain

K・・・ばね定数

d・・・変量

基本式はこれです。簡単にできるよう高校物理で出てきたばねの式を使って今回は作ってみました。K×dでばねの力を決めます。これだけでもいいような気がしますが、これでは永遠に振動し続けてしまうので抵抗を付けます。これで振動は収束し、ばねのような動きを表現できます。

抵抗の式

f:id:gutishin:20200125181341p:plain


S・・・振動の大きさ

抵抗の式は上記のように適当に定めました。Sが大きくなるほど早く振動が小さくなり、大きすぎるとヌメっとした動きになります。

整理すると

f:id:gutishin:20200125181426p:plain


次にこれをC#で実装していきます。

 

                                                                                                                

C#で実装 

Rigitbodyを使いばねの動きを表現

 

ばね定数 k=50 

振動の大きさ S=6

 

実行の様子

f:id:gutishin:20200125180259g:plain


 

                                                                                                                

上のプログラムの使い方

f:id:gutishin:20200125173646p:plain

上記のプログラムを適当なオブジェクトにつけます。そして、Rigitdbody2dを付けたオブジェクトを用意し一つはアンカーにもう一つは、ターゲットと設定してブログラムにアッタッチします。以上です。よかったら遊んでみてください。

 

Unity最高!!

 

play.google.com