void Wheel_Linkage_for_StaticTrack(int Temp_Direction) { if (Type == 8 && Temp_Direction == Direction) // Wheel. { if (Drive_Wheel_Script) { Destroy(Drive_Wheel_Script); } // Lock the wheels. if (This_Rigidbody) { This_Rigidbody.angularDrag = Mathf.Infinity; // Constraint spin. } // Switch the collider. MeshCollider[] Temp_MeshColliders = GetComponents <MeshCollider> (); if (Temp_MeshColliders.Length != 0) { if (Wheel_SphereCollider) { Destroy(Wheel_SphereCollider); } foreach (MeshCollider Temp_MeshCollider in Temp_MeshColliders) { Temp_MeshCollider.enabled = true; } } // Remove useless script. Static_Wheel_CS Temp_Script = GetComponent <Static_Wheel_CS> (); if (Temp_Script) { Destroy(Temp_Script); } } }
void Create_Static_Wheel(string Temp_Direction, Vector3 Temp_Pos) { GameObject Temp_Object = Create_GameObject("SprocketWheel", Temp_Direction, Temp_Pos); Add_Mesh(Temp_Object); if (Invisible_Physics_WheelProp.boolValue == false) { Add_Colliders(Temp_Object); } Add_Damage_Control_Script(Temp_Object, Temp_Direction); // Static_Wheel_CS script Static_Wheel_CS Temp_Script = Temp_Object.AddComponent <Static_Wheel_CS> (); Temp_Script.Radius_Offset = Radius_OffsetProp.floatValue; }
void Create_Wheel(string Temp_Direction, Vector3 Temp_Pos, int Temp_Count) { //Create_Gameobject GameObject Temp_Object = new GameObject("SupportWheel_" + Temp_Direction + "_" + Temp_Count); Temp_Object.transform.parent = Parent_Transform; Temp_Object.transform.localPosition = Temp_Pos; if (Temp_Direction == "R") { Temp_Object.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, 180.0f); } else { Temp_Object.transform.localRotation = Quaternion.Euler(Vector3.zero); } Temp_Object.layer = 9; // Ignore eachother. // Mesh MeshRenderer Temp_MeshRenderer = Temp_Object.AddComponent <MeshRenderer> (); Temp_MeshRenderer.material = Wheel_MaterialProp.objectReferenceValue as Material; MeshFilter Temp_MeshFilter; Temp_MeshFilter = Temp_Object.AddComponent <MeshFilter> (); Temp_MeshFilter.mesh = Wheel_MeshProp.objectReferenceValue as Mesh; // SphereCollider SphereCollider Temp_SphereCollider; Temp_SphereCollider = Temp_Object.AddComponent <SphereCollider> (); Temp_SphereCollider.radius = Wheel_RadiusProp.floatValue; Temp_SphereCollider.material = Collider_MaterialProp.objectReferenceValue as PhysicMaterial; if (Static_FlagProp.boolValue == false) // for Physics Wheel. // MeshCollider { if (Collider_MeshProp.objectReferenceValue != null) { MeshCollider Temp_MeshCollider; Temp_MeshCollider = Temp_Object.AddComponent <MeshCollider> (); Temp_MeshCollider.material = Collider_MaterialProp.objectReferenceValue as PhysicMaterial; Temp_MeshCollider.sharedMesh = Collider_MeshProp.objectReferenceValue as Mesh; Temp_MeshCollider.convex = true; Temp_MeshCollider.enabled = false; } // Sub MeshCollider if (Collider_Mesh_SubProp.objectReferenceValue != null) { MeshCollider Temp_MeshCollider_Sub; Temp_MeshCollider_Sub = Temp_Object.AddComponent <MeshCollider> (); Temp_MeshCollider_Sub.material = Collider_MaterialProp.objectReferenceValue as PhysicMaterial; Temp_MeshCollider_Sub.sharedMesh = Collider_Mesh_SubProp.objectReferenceValue as Mesh; Temp_MeshCollider_Sub.convex = true; Temp_MeshCollider_Sub.enabled = false; } // Rigidbody Rigidbody Temp_Rigidbody = Temp_Object.AddComponent <Rigidbody> (); Temp_Rigidbody.mass = Wheel_MassProp.floatValue; // HingeJoint HingeJoint Temp_HingeJoint; Temp_HingeJoint = Temp_Object.AddComponent <HingeJoint> (); Temp_HingeJoint.anchor = Vector3.zero; Temp_HingeJoint.axis = new Vector3(0.0f, 1.0f, 0.0f); Temp_HingeJoint.connectedBody = Parent_Transform.parent.gameObject.GetComponent <Rigidbody> (); // Drive_Wheel_CS Drive_Wheel_CS Temp_Drive_Wheel_CS; Temp_Drive_Wheel_CS = Temp_Object.AddComponent <Drive_Wheel_CS> (); Temp_Drive_Wheel_CS.Radius = Wheel_RadiusProp.floatValue; Temp_Drive_Wheel_CS.Drive_Flag = Drive_WheelProp.boolValue; // Wheel_Resize_CS if (Wheel_ResizeProp.boolValue) { Wheel_Resize_CS Temp_Wheel_Resize_CS; Temp_Wheel_Resize_CS = Temp_Object.AddComponent <Wheel_Resize_CS> (); Temp_Wheel_Resize_CS.ScaleDown_Size = ScaleDown_SizeProp.floatValue; Temp_Wheel_Resize_CS.Return_Speed = Return_SpeedProp.floatValue; } // Stabilizer_CS Temp_Object.AddComponent <Stabilizer_CS> (); } else // for Static Wheel { Static_Wheel_CS Temp_Script = Temp_Object.AddComponent <Static_Wheel_CS> (); Temp_Script.Radius_Offset = Radius_OffsetProp.floatValue; } // Damage_Control_CS Damage_Control_CS Temp_Damage_Control_CS; Temp_Damage_Control_CS = Temp_Object.AddComponent <Damage_Control_CS> (); Temp_Damage_Control_CS.Type = 8; // 8 = Wheel in "Damage_Control" if (Static_FlagProp.boolValue) { Temp_Damage_Control_CS.Durability = Mathf.Infinity; } else { Temp_Damage_Control_CS.Durability = Wheel_DurabilityProp.floatValue; } if (Temp_Direction == "L") { Temp_Damage_Control_CS.Direction = 0; } else { Temp_Damage_Control_CS.Direction = 1; } }