一定方向に棒を振るような動作をつけてみましょう。
棒状のオブジェクトを用意し、ヒンジジョイントのスプリング機能を用いて、弾きます。
マウスを長押し状態で、はじめの位置に。離すとスイングします。
関連記事:
バットをスイングする
90°回転して叩くような動き
回転軸を変えてオブジェクトを回す
オブジェクトの先端をマウスカーソルに向ける
Hingi Jointを使った振り子の動き
HingeJointを使ってドアを作成
紐をつけてブラブラをくり返す
HingeJointのスプリング
Cylinderを作成し、回転、サイズを変更します。
ヒンジジョイントを追加します。
コンポーネントを追加 > 物理 > ヒンジジョイント
ヒンジジョイントを設定します。
Anchorは、振りの中心となる軸の位置。オブジェクトの左端に持ってきました。
軸は、振りの中心となる軸の方向。今回はXを軸として回転させるため、1を入れました。
茶色で表示されている部分が、軸の中心になります。
Use Springにチェックを入れます。
Springは、ターゲット位置に移動するための力。
Damperの数値は、大きければ大きいほど、オブジェクトの速度が落ちます。
Target Positionは、スプリングのターゲット角度。
スプリングを使った振りの動作
StickMove.csを作成し、Cylinderに追加します。
StickMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class StickMove : MonoBehaviour { HingeJoint hj; JointSpring sp; public float beginPos; public float shotPos; void Start() { hj = GetComponent<HingeJoint>(); sp = hj.spring; } void Update() { if (Input.GetMouseButton(0)) { sp.targetPosition = beginPos; hj.spring = sp; } if (Input.GetMouseButtonUp(0)) { sp.targetPosition = shotPos; hj.spring = sp; } } } |
BeginPosにはスタート位置の角度、ShotPosにはスイング後の角度をそれぞれ入力します。
プレイして動きを確認します。
マウス長押しでスタートの位置へ、離すとスプリングが効いてスイングします。
バットのスイングに似たような動きができました。
関連記事:
バットをスイングする
90°回転して叩くような動き
回転軸を変えてオブジェクトを回す
オブジェクトの先端をマウスカーソルに向ける
Hingi Jointを使った振り子の動き
HingeJointを使ってドアを作成
紐をつけてブラブラをくり返す