

Unity4入門書で詰まっているところを質問させてください。  
鶏オブジェクトを弾として飛ばして、弾同士があたったらくっ付く、というJavaコードをC#で入力したのですが、弾同士がぶつかるだけで弾いて普通に落ちていってしまいます。

鶏弾をfab化して、このscriptを付け足し、publicのforceとtorqueに70,120を入力。  
ちゃんとヒットが成立し、コンポーネントにデータが代入されたか確認するためPrintでデバックをした結果、70,120と設定した値が無事表示されました。  
それでもCharacterJointが作れてないのか、分離して落ちていきます。どうすればよいでしょうか。

[code]

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class StickBall : MonoBehaviour
    {
        public float force;
        public float torque;
        private CharacterJoint myjoint;
        public void OnCollisionEnter(Collision other)
        {
    
            if (other.gameObject.tag == "Bullet")
            {
                if (myjoint == null)
                {
                    myjoint = gameObject.AddComponent<CharacterJoint>();
                    myjoint.connectedBody = other.rigidbody;
    
                    myjoint.breakForce = force;
                    myjoint.breakTorque = torque;
                    print("breakForce=\n" + gameObject.GetComponent<CharacterJoint>().breakForce);
                    print("breakTorque=\n" + gameObject.GetComponent<CharacterJoint>().breakTorque);
                }
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2016-10-08T14:00:13.867
29436
2016-10-15T05:22:45.460
2016-10-09T03:23:01.670
30
19064
question
c# unity3d
弾を飛ばして、ぶつかった弾同士がくっつく動作を実現したい


まず、そのCharacterJointはつながってるんですよね？  
このJointはバネみたいなもんだから、伸びた状態で着地して止まったのでは？

FixedJointではどうでしょう？


CC BY-SA 3.0
2016-10-12T10:13:33.343
29501
2016-10-12T10:13:33.343
19131
29436
answer


[`breakForce`](https://docs.unity3d.com/ja/current/ScriptReference/Joint-
breakForce.html)は「接続を解除するために必要な力」、[`breakTorque`](https://docs.unity3d.com/ja/current/ScriptReference/Joint-
breakTorque.html)は「接続を解除するために必要なトルク」なので、CharacterJointを作っても衝突した時点の値以上の力・回転がかかるとまた離れてしまいます。弾の発射速度が大きいために、衝突時点ではまだ弾が加速中ということはないでしょうか。

デバッグ方法として、`breakForce`と`breakTorque`の両方に`Mathf.Infinity`を設定してみることが考えられます。

それで弾がくっつくようであれば、あとは望みの動作にするために弾の発射速度とのバランス調整や、`breakForce`と`breakTorque`を衝突時点の値より大きくするなど考えられます。


CC BY-SA 3.0
2016-10-15T05:22:45.460
29579
2016-10-15T05:22:45.460
30
29436
answer