Diff Drive works without prefab
This commit is contained in:
parent
fba72b37f2
commit
e7bef66b8e
@ -36,14 +36,14 @@ namespace RoboidControl.Unity {
|
||||
|
||||
rb = gameObj.AddComponent<Rigidbody>();
|
||||
rb.isKinematic = false;
|
||||
rb.mass = 0.5f;
|
||||
rb.mass = 0.1f;
|
||||
}
|
||||
return component;
|
||||
}
|
||||
|
||||
private Rigidbody rb = null;
|
||||
|
||||
protected virtual void Awake() {
|
||||
protected virtual void Start() {
|
||||
rb = GetComponent<Rigidbody>();
|
||||
}
|
||||
|
||||
@ -52,63 +52,47 @@ namespace RoboidControl.Unity {
|
||||
if (coreDrive.wheelRadius <= 0 || coreDrive.wheelSeparation <= 0)
|
||||
return;
|
||||
|
||||
// if (leftWheel == null) {
|
||||
// motors = GetComponentsInChildren<Wheel>();
|
||||
// foreach (var motor in motors) {
|
||||
// if (motor.core.id == coreDrive.leftWheel.id)
|
||||
// leftWheel = motor;
|
||||
// }
|
||||
// if (leftWheel == null)
|
||||
// // Create placeholder wheel
|
||||
// leftWheel = Wheel.Create(this.GetComponent<Rigidbody>(), coreDrive.leftWheel.id);
|
||||
// }
|
||||
if (leftWheel != null) {
|
||||
leftWheel.core ??= coreDrive.leftWheel;
|
||||
SphereCollider leftWheelCollider = leftWheel.GetComponent<SphereCollider>();
|
||||
leftWheelCollider.radius = coreDrive.wheelRadius;
|
||||
// leftWheelCollider.center = new Vector3(-coreDrive.wheelSeparation / 2, 0, 0);
|
||||
}
|
||||
if (leftWheel == null)
|
||||
leftWheel = Wheel.Create(this.transform, coreDrive.leftWheel.id);
|
||||
|
||||
// if (rightWheel == null) {
|
||||
// if (motors == null)
|
||||
// motors = GetComponentsInChildren<Wheel>();
|
||||
// foreach (var motor in motors) {
|
||||
// if (motor.core.id == coreDrive.rightWheel.id)
|
||||
// rightWheel = motor;
|
||||
// }
|
||||
// if (rightWheel == null)
|
||||
// rightWheel = Wheel.Create(this.GetComponent<Rigidbody>(), coreDrive.rightWheel.id);
|
||||
// }
|
||||
if (rightWheel != null) {
|
||||
rightWheel.core ??= coreDrive.rightWheel;
|
||||
SphereCollider rightWheelCollider = rightWheel.GetComponent<SphereCollider>();
|
||||
rightWheelCollider.radius = coreDrive.wheelRadius;
|
||||
// rightWheelCollider.center = new Vector3(coreDrive.wheelSeparation / 2, 0, 0);
|
||||
}
|
||||
leftWheel.core ??= coreDrive.leftWheel;
|
||||
SphereCollider leftWheelCollider = leftWheel.GetComponent<SphereCollider>();
|
||||
leftWheelCollider.radius = coreDrive.wheelRadius;
|
||||
// leftWheelCollider.center = new Vector3(-coreDrive.wheelSeparation / 2, 0, 0);
|
||||
|
||||
if (rightWheel == null)
|
||||
rightWheel = Wheel.Create(this.transform, coreDrive.rightWheel.id);
|
||||
|
||||
rightWheel.core ??= coreDrive.rightWheel;
|
||||
SphereCollider rightWheelCollider = rightWheel.GetComponent<SphereCollider>();
|
||||
rightWheelCollider.radius = coreDrive.wheelRadius;
|
||||
// rightWheelCollider.center = new Vector3(coreDrive.wheelSeparation / 2, 0, 0);
|
||||
|
||||
if (casterWheel == null) {
|
||||
// Create it
|
||||
}
|
||||
if (casterWheel != null) {
|
||||
casterWheel.radius = coreDrive.wheelRadius;
|
||||
// Put it in the middle of the back
|
||||
casterWheel.center = new Vector3(0, 0, -coreDrive.wheelSeparation);
|
||||
GameObject gameObj = new("Caster wheel");
|
||||
gameObj.transform.parent = this.transform;
|
||||
casterWheel = gameObj.AddComponent<SphereCollider>();
|
||||
casterWheel.material = Wheel.slidingWheel;
|
||||
}
|
||||
casterWheel.radius = coreDrive.wheelRadius;
|
||||
// Put it in the middle of the back
|
||||
casterWheel.center = new Vector3(0, 0, -coreDrive.wheelSeparation);
|
||||
}
|
||||
|
||||
|
||||
protected override void FixedUpdate() {
|
||||
base.FixedUpdate();
|
||||
|
||||
float leftWheelVelocity = leftWheel.rotationSpeed * (2 * Mathf.PI) * coreDrive.wheelRadius;
|
||||
float rightWheelVelocity = rightWheel.rotationSpeed * (2 * Mathf.PI) * coreDrive.wheelRadius;
|
||||
if (rb != null && leftWheel != null && rightWheel != null) {
|
||||
float leftWheelVelocity = leftWheel.rotationSpeed * (2 * Mathf.PI) * coreDrive.wheelRadius;
|
||||
float rightWheelVelocity = rightWheel.rotationSpeed * (2 * Mathf.PI) * coreDrive.wheelRadius;
|
||||
|
||||
float forwardSpeed = (leftWheelVelocity + rightWheelVelocity) / 2f;
|
||||
float turningSpeed = (leftWheelVelocity - rightWheelVelocity) / coreDrive.wheelSeparation;
|
||||
float forwardSpeed = (leftWheelVelocity + rightWheelVelocity) / 2f;
|
||||
float turningSpeed = (leftWheelVelocity - rightWheelVelocity) / coreDrive.wheelSeparation;
|
||||
|
||||
// Use smoothing to emulate motor inertia
|
||||
rb.velocity = 0.9f * rb.velocity + 0.1f * forwardSpeed * transform.forward;
|
||||
rb.angularVelocity = 0.9f * rb.angularVelocity + 0.1f * turningSpeed * Vector3.up;
|
||||
// Use smoothing to emulate motor inertia
|
||||
rb.velocity = 0.9f * rb.velocity + 0.1f * forwardSpeed * transform.forward;
|
||||
rb.angularVelocity = 0.9f * rb.angularVelocity + 0.1f * turningSpeed * Vector3.up;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,744 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &135949056663158942
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 693610334404048217}
|
||||
- component: {fileID: 874278397287993211}
|
||||
- component: {fileID: 8149674613691108646}
|
||||
- component: {fileID: 7453252590388621785}
|
||||
m_Layer: 0
|
||||
m_Name: Body
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &693610334404048217
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 135949056663158942}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.01, z: -0.01}
|
||||
m_LocalScale: {x: 0.15, y: 0.05, z: 0.2}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6798369561388671537}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &874278397287993211
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 135949056663158942}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &8149674613691108646
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 135949056663158942}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!65 &7453252590388621785
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 135949056663158942}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: -3.4930155e-36, y: 0, z: 0}
|
||||
--- !u!1 &461568911372928883
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6614469428499581915}
|
||||
- component: {fileID: 5740668195873595670}
|
||||
- component: {fileID: 981938778352350881}
|
||||
- component: {fileID: 5978480396129778279}
|
||||
- component: {fileID: 2485026999856066728}
|
||||
- component: {fileID: 1286794448967865589}
|
||||
m_Layer: 0
|
||||
m_Name: Sphere
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!4 &6614469428499581915
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 461568911372928883}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -0, y: -0.0337, z: -0.0684}
|
||||
m_LocalScale: {x: 0.02, y: 0.02, z: 0.02}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 213193100111257669}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &5740668195873595670
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 461568911372928883}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &981938778352350881
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 461568911372928883}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!135 &5978480396129778279
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 461568911372928883}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 2.2e-44, y: 0, z: 0}
|
||||
--- !u!54 &2485026999856066728
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 461568911372928883}
|
||||
serializedVersion: 4
|
||||
m_Mass: 0.01
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0
|
||||
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ImplicitCom: 1
|
||||
m_ImplicitTensor: 1
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!59 &1286794448967865589
|
||||
HingeJoint:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 461568911372928883}
|
||||
m_ConnectedBody: {fileID: 4118868690347991998}
|
||||
m_ConnectedArticulationBody: {fileID: 0}
|
||||
m_Anchor: {x: 0, y: 0.5, z: 0}
|
||||
m_Axis: {x: 1, y: 0, z: 0}
|
||||
m_AutoConfigureConnectedAnchor: 1
|
||||
m_ConnectedAnchor: {x: 0, y: -0.019776002, z: -0.0684}
|
||||
serializedVersion: 2
|
||||
m_UseSpring: 0
|
||||
m_Spring:
|
||||
spring: 0
|
||||
damper: 0
|
||||
targetPosition: 0
|
||||
m_UseMotor: 0
|
||||
m_Motor:
|
||||
targetVelocity: 0
|
||||
force: 0
|
||||
freeSpin: 0
|
||||
m_UseLimits: 0
|
||||
m_ExtendedLimits: 0
|
||||
m_UseAcceleration: 0
|
||||
m_Limits:
|
||||
min: 0
|
||||
max: 0
|
||||
bounciness: 0
|
||||
bounceMinVelocity: 0.2
|
||||
contactDistance: 0
|
||||
m_BreakForce: Infinity
|
||||
m_BreakTorque: Infinity
|
||||
m_EnableCollision: 0
|
||||
m_EnablePreprocessing: 1
|
||||
m_MassScale: 1
|
||||
m_ConnectedMassScale: 1
|
||||
--- !u!1 &3154420579555598162
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 213193100111257669}
|
||||
- component: {fileID: 7200410571604616845}
|
||||
- component: {fileID: 894333789048616995}
|
||||
m_Layer: 0
|
||||
m_Name: Caster wheel
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &213193100111257669
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3154420579555598162}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: 7e-45, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.0039239973, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 6614469428499581915}
|
||||
m_Father: {fileID: 6798369561388671537}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!146 &7200410571604616845
|
||||
WheelCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3154420579555598162}
|
||||
serializedVersion: 2
|
||||
m_Center: {x: 0, y: 0, z: -0.1}
|
||||
m_Radius: 0.1
|
||||
m_SuspensionSpring:
|
||||
spring: 0
|
||||
damper: 0
|
||||
targetPosition: 0.5
|
||||
m_SuspensionDistance: 0.01
|
||||
m_ForceAppPointDistance: 0
|
||||
m_Mass: 0.1
|
||||
m_WheelDampingRate: 0.25
|
||||
m_ForwardFriction:
|
||||
m_ExtremumSlip: 0.01
|
||||
m_ExtremumValue: 0.01
|
||||
m_AsymptoteSlip: 1
|
||||
m_AsymptoteValue: 0.01
|
||||
m_Stiffness: 0.01
|
||||
m_SidewaysFriction:
|
||||
m_ExtremumSlip: 0.01
|
||||
m_ExtremumValue: 0.01
|
||||
m_AsymptoteSlip: 1
|
||||
m_AsymptoteValue: 0.01
|
||||
m_Stiffness: 0.01
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_Enabled: 0
|
||||
m_ProvidesContacts: 0
|
||||
--- !u!135 &894333789048616995
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3154420579555598162}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.1
|
||||
m_Center: {x: 0, y: 0, z: -0.1}
|
||||
--- !u!1 &3377575892836316963
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7997617267105515189}
|
||||
- component: {fileID: 3291281099104606017}
|
||||
- component: {fileID: 6773972788910618332}
|
||||
- component: {fileID: 3720747953092717687}
|
||||
m_Layer: 0
|
||||
m_Name: Left wheel
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7997617267105515189
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3377575892836316963}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.003924, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6798369561388671537}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!146 &3291281099104606017
|
||||
WheelCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3377575892836316963}
|
||||
serializedVersion: 2
|
||||
m_Center: {x: -0.1, y: 0, z: 0}
|
||||
m_Radius: 0.1
|
||||
m_SuspensionSpring:
|
||||
spring: 0
|
||||
damper: 0
|
||||
targetPosition: 0.5
|
||||
m_SuspensionDistance: 0.01
|
||||
m_ForceAppPointDistance: 0
|
||||
m_Mass: 0.1
|
||||
m_WheelDampingRate: 0.25
|
||||
m_ForwardFriction:
|
||||
m_ExtremumSlip: 0.4
|
||||
m_ExtremumValue: 1
|
||||
m_AsymptoteSlip: 0.8
|
||||
m_AsymptoteValue: 0.5
|
||||
m_Stiffness: 1
|
||||
m_SidewaysFriction:
|
||||
m_ExtremumSlip: 0.2
|
||||
m_ExtremumValue: 1
|
||||
m_AsymptoteSlip: 0.5
|
||||
m_AsymptoteValue: 0.75
|
||||
m_Stiffness: 1
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_Enabled: 0
|
||||
m_ProvidesContacts: 0
|
||||
--- !u!114 &6773972788910618332
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3377575892836316963}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ddd5065d5e866894cbcb569c3a898ccb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
participant: {fileID: 0}
|
||||
rotationSpeed: 0
|
||||
wheelCollider: {fileID: 3291281099104606017}
|
||||
--- !u!135 &3720747953092717687
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3377575892836316963}
|
||||
m_Material: {fileID: 13400000, guid: 6311a2373d42743449d6eb1130ee618a, type: 2}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.1
|
||||
m_Center: {x: -0.1, y: 0, z: 0}
|
||||
--- !u!1 &4326386140118987503
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6798369561388671537}
|
||||
- component: {fileID: 2975045340952151157}
|
||||
- component: {fileID: 4118868690347991998}
|
||||
m_Layer: 0
|
||||
m_Name: DifferentialDrive 1
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6798369561388671537
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4326386140118987503}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 1.276433e-21, y: -1.082074e-19, z: -2.3980766e-36, w: 1}
|
||||
m_LocalPosition: {x: 2.1932227e-37, y: -0.06941543, z: -1.3084181e-19}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 7997617267105515189}
|
||||
- {fileID: 2660791421672615984}
|
||||
- {fileID: 693610334404048217}
|
||||
- {fileID: 213193100111257669}
|
||||
- {fileID: 4266196581235677096}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &2975045340952151157
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4326386140118987503}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5c80bc2fd1d8aa14facb1ad4b6ccf7b3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
participant: {fileID: 0}
|
||||
leftWheel: {fileID: 6773972788910618332}
|
||||
rightWheel: {fileID: 7425139233737877139}
|
||||
casterWheel: {fileID: 894333789048616995}
|
||||
--- !u!54 &4118868690347991998
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4326386140118987503}
|
||||
serializedVersion: 4
|
||||
m_Mass: 0.1
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ImplicitCom: 1
|
||||
m_ImplicitTensor: 1
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!1 &5122915782100933114
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2660791421672615984}
|
||||
- component: {fileID: 5992237647142430322}
|
||||
- component: {fileID: 7425139233737877139}
|
||||
- component: {fileID: 8150853676422519226}
|
||||
m_Layer: 0
|
||||
m_Name: Right wheel
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2660791421672615984
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5122915782100933114}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.003924, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6798369561388671537}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!146 &5992237647142430322
|
||||
WheelCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5122915782100933114}
|
||||
serializedVersion: 2
|
||||
m_Center: {x: 0.1, y: 0, z: 0}
|
||||
m_Radius: 0.1
|
||||
m_SuspensionSpring:
|
||||
spring: 0
|
||||
damper: 0
|
||||
targetPosition: 0.5
|
||||
m_SuspensionDistance: 0.01
|
||||
m_ForceAppPointDistance: 0
|
||||
m_Mass: 0.1
|
||||
m_WheelDampingRate: 0.25
|
||||
m_ForwardFriction:
|
||||
m_ExtremumSlip: 0.4
|
||||
m_ExtremumValue: 1
|
||||
m_AsymptoteSlip: 0.8
|
||||
m_AsymptoteValue: 0.5
|
||||
m_Stiffness: 1
|
||||
m_SidewaysFriction:
|
||||
m_ExtremumSlip: 0.2
|
||||
m_ExtremumValue: 1
|
||||
m_AsymptoteSlip: 0.5
|
||||
m_AsymptoteValue: 0.75
|
||||
m_Stiffness: 1
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_Enabled: 0
|
||||
m_ProvidesContacts: 0
|
||||
--- !u!114 &7425139233737877139
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5122915782100933114}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ddd5065d5e866894cbcb569c3a898ccb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
participant: {fileID: 0}
|
||||
rotationSpeed: 0
|
||||
wheelCollider: {fileID: 5992237647142430322}
|
||||
--- !u!135 &8150853676422519226
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5122915782100933114}
|
||||
m_Material: {fileID: 13400000, guid: 6311a2373d42743449d6eb1130ee618a, type: 2}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.1
|
||||
m_Center: {x: 0.1, y: 0, z: 0}
|
||||
--- !u!1 &9198376257167485667
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4266196581235677096}
|
||||
- component: {fileID: 3529432273103841021}
|
||||
m_Layer: 0
|
||||
m_Name: Front Caster wheel
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!4 &4266196581235677096
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9198376257167485667}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: 7e-45, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.0039239973, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6798369561388671537}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!146 &3529432273103841021
|
||||
WheelCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9198376257167485667}
|
||||
serializedVersion: 2
|
||||
m_Center: {x: 0, y: 0, z: 0.1}
|
||||
m_Radius: 0.1
|
||||
m_SuspensionSpring:
|
||||
spring: 100
|
||||
damper: 10
|
||||
targetPosition: 0.5
|
||||
m_SuspensionDistance: 0.01
|
||||
m_ForceAppPointDistance: 0
|
||||
m_Mass: 0.1
|
||||
m_WheelDampingRate: 0.25
|
||||
m_ForwardFriction:
|
||||
m_ExtremumSlip: 0.01
|
||||
m_ExtremumValue: 0.01
|
||||
m_AsymptoteSlip: 1
|
||||
m_AsymptoteValue: 0.01
|
||||
m_Stiffness: 0.01
|
||||
m_SidewaysFriction:
|
||||
m_ExtremumSlip: 0.01
|
||||
m_ExtremumValue: 0.01
|
||||
m_AsymptoteSlip: 1
|
||||
m_AsymptoteValue: 0.01
|
||||
m_Stiffness: 0.01
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_Enabled: 0
|
||||
m_ProvidesContacts: 0
|
@ -240,7 +240,7 @@ GameObject:
|
||||
- component: {fileID: 2975045340952151157}
|
||||
- component: {fileID: 4118868690347991998}
|
||||
m_Layer: 0
|
||||
m_Name: DifferentialDrive
|
||||
m_Name: DifferentialDrive_disabled
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
14
Unity/Resources/SlidingWheel.physicMaterial
Normal file
14
Unity/Resources/SlidingWheel.physicMaterial
Normal file
@ -0,0 +1,14 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!134 &13400000
|
||||
PhysicMaterial:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SlidingWheel
|
||||
dynamicFriction: 0.02
|
||||
staticFriction: 0.01
|
||||
bounciness: 0
|
||||
frictionCombine: 1
|
||||
bounceCombine: 0
|
@ -35,7 +35,7 @@ namespace RoboidControl.Unity {
|
||||
return component;
|
||||
}
|
||||
}
|
||||
public static Wheel Create(Rigidbody rb, byte thingId) {
|
||||
public static Wheel Create(Transform parent, byte thingId) {
|
||||
GameObject prefab = (GameObject)Resources.Load("Wheel");
|
||||
if (prefab != null) {
|
||||
// Use resource prefab when available
|
||||
@ -48,16 +48,19 @@ namespace RoboidControl.Unity {
|
||||
else {
|
||||
// Fallback implementation
|
||||
GameObject gameObj = new("Wheel");
|
||||
gameObj.transform.parent = rb.transform;
|
||||
gameObj.transform.parent = parent;
|
||||
Wheel component = gameObj.AddComponent<Wheel>();
|
||||
SiteServer participant = FindAnyObjectByType<SiteServer>();
|
||||
RoboidControl.Thing core = participant.coreParticipant.Get(thingId);
|
||||
if (core == null)
|
||||
core = new(participant.coreParticipant, RoboidControl.Thing.Type.UncontrolledMotor, thingId, false);
|
||||
else {
|
||||
;
|
||||
;
|
||||
}
|
||||
component.Init(core);
|
||||
SphereCollider collider = gameObj.AddComponent<SphereCollider>();
|
||||
collider.radius = 0.00001f;
|
||||
collider.material = slidingWheel;
|
||||
// component.wheelCollider = gameObj.AddComponent<WheelCollider>();
|
||||
// component.wheelCollider.mass = 0.1f;
|
||||
// component.wheelCollider.suspensionDistance = 0.01f;
|
||||
@ -71,6 +74,24 @@ namespace RoboidControl.Unity {
|
||||
}
|
||||
}
|
||||
|
||||
private static PhysicMaterial _slidingWheel;
|
||||
public static PhysicMaterial slidingWheel {
|
||||
get {
|
||||
if (_slidingWheel == null) {
|
||||
_slidingWheel = new() {
|
||||
dynamicFriction = 0.02f, // Dynamic friction
|
||||
staticFriction = 0.01f, // Static friction
|
||||
bounciness = 0f, // Bounciness (bounciness value between 0 and 1)
|
||||
|
||||
// Set the friction combine and bounce combine methods
|
||||
frictionCombine = PhysicMaterialCombine.Minimum, // How to combine friction
|
||||
bounceCombine = PhysicMaterialCombine.Average // How to combine bounciness
|
||||
};
|
||||
}
|
||||
return _slidingWheel;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user