Unity Spring jointを”C#"で作ってみた
spring jointとはばねのような動きが再現できる便利な機能である。便利だけど中身が知りたい!C#で書きたい!と思って今回試しに作ってみました。
※筆者は物理学科出身ではありません。あくまでも参考までに、
Spring Jointとは
Unityでは有名な機能の一つであるSpring jointは上のようなばねの動きを簡単に表現できます。また、ばねの強さ長さを簡単に決められてとても便利です。使い方に関しては以下のリンクを参考にしてください。
主な仕組み(ばねの式)
K・・・ばね定数
d・・・変量
基本式はこれです。簡単にできるよう高校物理で出てきたばねの式を使って今回は作ってみました。K×dでばねの力を決めます。これだけでもいいような気がしますが、これでは永遠に振動し続けてしまうので抵抗を付けます。これで振動は収束し、ばねのような動きを表現できます。
抵抗の式
S・・・振動の大きさ
抵抗の式は上記のように適当に定めました。Sが大きくなるほど早く振動が小さくなり、大きすぎるとヌメっとした動きになります。
整理すると
次にこれをC#で実装していきます。
C#で実装
ばね定数 k=50
振動の大きさ S=6
実行の様子
上のプログラムの使い方
上記のプログラムを適当なオブジェクトにつけます。そして、Rigitdbody2dを付けたオブジェクトを用意し一つはアンカーにもう一つは、ターゲットと設定してブログラムにアッタッチします。以上です。よかったら遊んでみてください。
Unity最高!!