diff --git a/Assets/Car.meta b/Assets/Car.meta new file mode 100644 index 0000000..4034d1d --- /dev/null +++ b/Assets/Car.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a34845792b8aeab4e8d53b7827bb0e5d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Car/Car Body.png b/Assets/Car/Car Body.png new file mode 100644 index 0000000..53d35a4 Binary files /dev/null and b/Assets/Car/Car Body.png differ diff --git a/Assets/Car/Car Body.png.meta b/Assets/Car/Car Body.png.meta new file mode 100644 index 0000000..2e76cdf --- /dev/null +++ b/Assets/Car/Car Body.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 0601a27fa7aa1744287b8b9ea1308280 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Car/Scripts.meta b/Assets/Car/Scripts.meta new file mode 100644 index 0000000..f14866d --- /dev/null +++ b/Assets/Car/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 098eddcc00087d94cacab8097c3112a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Car/Scripts/Car.meta b/Assets/Car/Scripts/Car.meta new file mode 100644 index 0000000..39d5ba9 --- /dev/null +++ b/Assets/Car/Scripts/Car.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfdc5a5538675f14687a93215dc32d6d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Car/Scripts/Car/CarControl.cs b/Assets/Car/Scripts/Car/CarControl.cs new file mode 100644 index 0000000..e9f27b8 --- /dev/null +++ b/Assets/Car/Scripts/Car/CarControl.cs @@ -0,0 +1,93 @@ +using UnityEngine; + +public class CarControl : MonoBehaviour +{ + [Header("Car Properties")] + public float motorTorque = 2000f; + public float brakeTorque = 2000f; + public float maxSpeed = 20f; + public float steeringRange = 30f; + public float steeringRangeAtMaxSpeed = 10f; + public float centreOfGravityOffset = -1f; + + private WheelControl[] wheels; + private Rigidbody rigidBody; + + private CarInputActions carControls; // Reference to the new input system + + void Awake() + { + carControls = new CarInputActions(); // Initialize Input Actions + } + void OnEnable() + { + carControls.Enable(); + } + + void OnDisable() + { + carControls.Disable(); + } + + // Start is called before the first frame update + void Start() + { + rigidBody = GetComponent(); + + // Adjust center of mass to improve stability and prevent rolling + Vector3 centerOfMass = rigidBody.centerOfMass; + centerOfMass.y += centreOfGravityOffset; + rigidBody.centerOfMass = centerOfMass; + + // Get all wheel components attached to the car + wheels = GetComponentsInChildren(); + } + + // FixedUpdate is called at a fixed time interval + void FixedUpdate() + { + // Read the Vector2 input from the new Input System + Vector2 inputVector = carControls.Car.Movement.ReadValue(); + + // Get player input for acceleration and steering + float vInput = inputVector.y; // Forward/backward input + float hInput = inputVector.x; // Steering input + + // Calculate current speed along the car's forward axis + float forwardSpeed = Vector3.Dot(transform.forward, rigidBody.linearVelocity); + float speedFactor = Mathf.InverseLerp(0, maxSpeed, Mathf.Abs(forwardSpeed)); // Normalized speed factor + + // Reduce motor torque and steering at high speeds for better handling + float currentMotorTorque = Mathf.Lerp(motorTorque, 0, speedFactor); + float currentSteerRange = Mathf.Lerp(steeringRange, steeringRangeAtMaxSpeed, speedFactor); + + // Determine if the player is accelerating or trying to reverse + bool isAccelerating = Mathf.Sign(vInput) == Mathf.Sign(forwardSpeed); + + foreach (var wheel in wheels) + { + // Apply steering to wheels that support steering + if (wheel.steerable) + { + wheel.WheelCollider.steerAngle = hInput * currentSteerRange; + } + + if (isAccelerating) + { + // Apply torque to motorized wheels + if (wheel.motorized) + { + wheel.WheelCollider.motorTorque = vInput * currentMotorTorque; + } + // Release brakes when accelerating + wheel.WheelCollider.brakeTorque = 0f; + } + else + { + // Apply brakes when reversing direction + wheel.WheelCollider.motorTorque = 0f; + wheel.WheelCollider.brakeTorque = Mathf.Abs(vInput) * brakeTorque; + } + } + } +} diff --git a/Assets/Car/Scripts/Car/CarControl.cs.meta b/Assets/Car/Scripts/Car/CarControl.cs.meta new file mode 100644 index 0000000..828ac01 --- /dev/null +++ b/Assets/Car/Scripts/Car/CarControl.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0665500128106154f8d28bace7476416 \ No newline at end of file diff --git a/Assets/Car/Scripts/Car/CarInputActions.cs b/Assets/Car/Scripts/Car/CarInputActions.cs new file mode 100644 index 0000000..db0d2e9 --- /dev/null +++ b/Assets/Car/Scripts/Car/CarInputActions.cs @@ -0,0 +1,355 @@ +//------------------------------------------------------------------------------ +// +// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator +// version 1.14.0 +// from Assets/Car/CarInputActions.inputactions +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Utilities; + +/// +/// Provides programmatic access to , , and instances defined in asset "Assets/Car/CarInputActions.inputactions". +/// +/// +/// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. +/// +/// +/// +/// using namespace UnityEngine; +/// using UnityEngine.InputSystem; +/// +/// // Example of using an InputActionMap named "Player" from a UnityEngine.MonoBehaviour implementing callback interface. +/// public class Example : MonoBehaviour, MyActions.IPlayerActions +/// { +/// private MyActions_Actions m_Actions; // Source code representation of asset. +/// private MyActions_Actions.PlayerActions m_Player; // Source code representation of action map. +/// +/// void Awake() +/// { +/// m_Actions = new MyActions_Actions(); // Create asset object. +/// m_Player = m_Actions.Player; // Extract action map object. +/// m_Player.AddCallbacks(this); // Register callback interface IPlayerActions. +/// } +/// +/// void OnDestroy() +/// { +/// m_Actions.Dispose(); // Destroy asset object. +/// } +/// +/// void OnEnable() +/// { +/// m_Player.Enable(); // Enable all actions within map. +/// } +/// +/// void OnDisable() +/// { +/// m_Player.Disable(); // Disable all actions within map. +/// } +/// +/// #region Interface implementation of MyActions.IPlayerActions +/// +/// // Invoked when "Move" action is either started, performed or canceled. +/// public void OnMove(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnMove: {context.ReadValue<Vector2>()}"); +/// } +/// +/// // Invoked when "Attack" action is either started, performed or canceled. +/// public void OnAttack(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnAttack: {context.ReadValue<float>()}"); +/// } +/// +/// #endregion +/// } +/// +/// +public partial class @CarInputActions: IInputActionCollection2, IDisposable +{ + /// + /// Provides access to the underlying asset instance. + /// + public InputActionAsset asset { get; } + + /// + /// Constructs a new instance. + /// + public @CarInputActions() + { + asset = InputActionAsset.FromJson(@"{ + ""name"": ""CarInputActions"", + ""maps"": [ + { + ""name"": ""Car"", + ""id"": ""c19f950c-3a7a-4a76-8523-1aa6fe6fcc3f"", + ""actions"": [ + { + ""name"": ""Movement"", + ""type"": ""Value"", + ""id"": ""a3955e03-93cf-4eb3-aa7e-d47eb8f6589c"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + } + ], + ""bindings"": [ + { + ""name"": ""2D Vector"", + ""id"": ""4acb7ca1-35a7-4da8-8538-b419114f937a"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Movement"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""7cf87b87-53dc-449a-a3c4-f2e1f37f588a"", + ""path"": ""/w"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""6f7380e9-0226-4816-92cb-3d668bd040f9"", + ""path"": ""/s"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""5bf6f0e5-ee39-410a-9997-d4ef3362d1a2"", + ""path"": ""/a"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""e9e1e925-1395-4159-a82a-b359f9767e77"", + ""path"": ""/d"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Movement"", + ""isComposite"": false, + ""isPartOfComposite"": true + } + ] + } + ], + ""controlSchemes"": [] +}"); + // Car + m_Car = asset.FindActionMap("Car", throwIfNotFound: true); + m_Car_Movement = m_Car.FindAction("Movement", throwIfNotFound: true); + } + + ~@CarInputActions() + { + UnityEngine.Debug.Assert(!m_Car.enabled, "This will cause a leak and performance issues, CarInputActions.Car.Disable() has not been called."); + } + + /// + /// Destroys this asset and all associated instances. + /// + public void Dispose() + { + UnityEngine.Object.Destroy(asset); + } + + /// + public InputBinding? bindingMask + { + get => asset.bindingMask; + set => asset.bindingMask = value; + } + + /// + public ReadOnlyArray? devices + { + get => asset.devices; + set => asset.devices = value; + } + + /// + public ReadOnlyArray controlSchemes => asset.controlSchemes; + + /// + public bool Contains(InputAction action) + { + return asset.Contains(action); + } + + /// + public IEnumerator GetEnumerator() + { + return asset.GetEnumerator(); + } + + /// + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + /// + public void Enable() + { + asset.Enable(); + } + + /// + public void Disable() + { + asset.Disable(); + } + + /// + public IEnumerable bindings => asset.bindings; + + /// + public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false) + { + return asset.FindAction(actionNameOrId, throwIfNotFound); + } + + /// + public int FindBinding(InputBinding bindingMask, out InputAction action) + { + return asset.FindBinding(bindingMask, out action); + } + + // Car + private readonly InputActionMap m_Car; + private List m_CarActionsCallbackInterfaces = new List(); + private readonly InputAction m_Car_Movement; + /// + /// Provides access to input actions defined in input action map "Car". + /// + public struct CarActions + { + private @CarInputActions m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public CarActions(@CarInputActions wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "Car/Movement". + /// + public InputAction @Movement => m_Wrapper.m_Car_Movement; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_Car; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(CarActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(ICarActions instance) + { + if (instance == null || m_Wrapper.m_CarActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_CarActionsCallbackInterfaces.Add(instance); + @Movement.started += instance.OnMovement; + @Movement.performed += instance.OnMovement; + @Movement.canceled += instance.OnMovement; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(ICarActions instance) + { + @Movement.started -= instance.OnMovement; + @Movement.performed -= instance.OnMovement; + @Movement.canceled -= instance.OnMovement; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(ICarActions instance) + { + if (m_Wrapper.m_CarActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(ICarActions instance) + { + foreach (var item in m_Wrapper.m_CarActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_CarActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public CarActions @Car => new CarActions(this); + /// + /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "Car" which allows adding and removing callbacks. + /// + /// + /// + public interface ICarActions + { + /// + /// Method invoked when associated input action "Movement" is either , or . + /// + /// + /// + /// + void OnMovement(InputAction.CallbackContext context); + } +} diff --git a/Assets/Car/Scripts/Car/CarInputActions.cs.meta b/Assets/Car/Scripts/Car/CarInputActions.cs.meta new file mode 100644 index 0000000..16fbaf7 --- /dev/null +++ b/Assets/Car/Scripts/Car/CarInputActions.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ce4bc8ceb06ac494c929dc2ee1148479 \ No newline at end of file diff --git a/Assets/Car/Scripts/Car/CarInputActions.inputactions b/Assets/Car/Scripts/Car/CarInputActions.inputactions new file mode 100644 index 0000000..1e3ffee --- /dev/null +++ b/Assets/Car/Scripts/Car/CarInputActions.inputactions @@ -0,0 +1,78 @@ +{ + "name": "CarInputActions", + "maps": [ + { + "name": "Car", + "id": "c19f950c-3a7a-4a76-8523-1aa6fe6fcc3f", + "actions": [ + { + "name": "Movement", + "type": "Value", + "id": "a3955e03-93cf-4eb3-aa7e-d47eb8f6589c", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + } + ], + "bindings": [ + { + "name": "2D Vector", + "id": "4acb7ca1-35a7-4da8-8538-b419114f937a", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Movement", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "7cf87b87-53dc-449a-a3c4-f2e1f37f588a", + "path": "/w", + "interactions": "", + "processors": "", + "groups": "", + "action": "Movement", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "6f7380e9-0226-4816-92cb-3d668bd040f9", + "path": "/s", + "interactions": "", + "processors": "", + "groups": "", + "action": "Movement", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "5bf6f0e5-ee39-410a-9997-d4ef3362d1a2", + "path": "/a", + "interactions": "", + "processors": "", + "groups": "", + "action": "Movement", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "e9e1e925-1395-4159-a82a-b359f9767e77", + "path": "/d", + "interactions": "", + "processors": "", + "groups": "", + "action": "Movement", + "isComposite": false, + "isPartOfComposite": true + } + ] + } + ], + "controlSchemes": [] +} \ No newline at end of file diff --git a/Assets/Car/Scripts/Car/CarInputActions.inputactions.meta b/Assets/Car/Scripts/Car/CarInputActions.inputactions.meta new file mode 100644 index 0000000..b6b6ad7 --- /dev/null +++ b/Assets/Car/Scripts/Car/CarInputActions.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 686e90d9bee6e9d4cbff2ff59322f557 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 1 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: diff --git a/Assets/Car/Scripts/Wheel.meta b/Assets/Car/Scripts/Wheel.meta new file mode 100644 index 0000000..0b91f7e --- /dev/null +++ b/Assets/Car/Scripts/Wheel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd085837d46452c48aecbbfa157c4346 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Car/Scripts/Wheel/Scripts.meta b/Assets/Car/Scripts/Wheel/Scripts.meta new file mode 100644 index 0000000..1fca185 --- /dev/null +++ b/Assets/Car/Scripts/Wheel/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59f3eacb95253684196cdabaa94f41f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Car/Scripts/Wheel/Scripts/WheelControll.cs b/Assets/Car/Scripts/Wheel/Scripts/WheelControll.cs new file mode 100644 index 0000000..5eebd94 --- /dev/null +++ b/Assets/Car/Scripts/Wheel/Scripts/WheelControll.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +public class WheelControl : MonoBehaviour +{ + public Transform wheelModel; + + [HideInInspector] public WheelCollider WheelCollider; + + // Create properties for the CarControl script + // (You should enable/disable these via the + // Editor Inspector window) + public bool steerable; + public bool motorized; + + Vector3 position; + Quaternion rotation; + + // Start is called before the first frame update + private void Start() + { + WheelCollider = GetComponent(); + } + + // Update is called once per frame + void Update() + { + // Get the Wheel collider's world pose values and + // use them to set the wheel model's position and rotation + WheelCollider.GetWorldPose(out position, out rotation); + wheelModel.transform.position = position; + wheelModel.transform.rotation = rotation; + } +} diff --git a/Assets/Car/Scripts/Wheel/Scripts/WheelControll.cs.meta b/Assets/Car/Scripts/Wheel/Scripts/WheelControll.cs.meta new file mode 100644 index 0000000..2d9ae63 --- /dev/null +++ b/Assets/Car/Scripts/Wheel/Scripts/WheelControll.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 484c6bad1888141449bbccb931f4b3cf \ No newline at end of file diff --git a/Assets/Car/car.fbx b/Assets/Car/car.fbx new file mode 100644 index 0000000..2e7f1e9 Binary files /dev/null and b/Assets/Car/car.fbx differ diff --git a/Assets/Car/car.fbx.meta b/Assets/Car/car.fbx.meta new file mode 100644 index 0000000..828ebbc --- /dev/null +++ b/Assets/Car/car.fbx.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: cde3b92d14d0b0349b04a21a7734f7fd +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: + - first: + type: UnityEngine:Texture2D + assembly: UnityEngine.CoreModule + name: Car Body + second: {fileID: 2800000, guid: 0601a27fa7aa1744287b8b9ea1308280, type: 3} + - first: + type: UnityEngine:Texture2D + assembly: UnityEngine.CoreModule + name: wheel + second: {fileID: 2800000, guid: 6369c12d002a1b348a0f853abe43a22d, type: 3} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Character.meta b/Assets/Character.meta new file mode 100644 index 0000000..272fd3f --- /dev/null +++ b/Assets/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5be90bf5c38796546af4cbf973c39085 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Character/Scripts.meta b/Assets/Character/Scripts.meta new file mode 100644 index 0000000..a486501 --- /dev/null +++ b/Assets/Character/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab7d5486bef4e974087db69b0c307254 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Character/Scripts/CharacterMovementCotroller.cs b/Assets/Character/Scripts/CharacterMovementCotroller.cs new file mode 100644 index 0000000..c900210 --- /dev/null +++ b/Assets/Character/Scripts/CharacterMovementCotroller.cs @@ -0,0 +1,43 @@ +using System; +using UnityEngine; +using UnityEngine.InputSystem; + +public class CharacterMovementCotroller : MonoBehaviour +{ + + [SerializeField] float driveSpeed = 10f; + [SerializeField] float turnSpeed = 1000f; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + void Start() + { + + } + + // Update is called once per frame + void Update() + { + EvaluateMovementInput(); + } + + private Vector3 turnLeft = new Vector3(0, -1, 0); + private Vector3 turnRight = new Vector3(0, 1, 0); + + void EvaluateMovementInput() { + Quaternion currentRotation = transform.rotation; + if (Keyboard.current.wKey.isPressed) { + Vector3 moveBy = transform.forward * driveSpeed * Time.deltaTime; + transform.position += moveBy; + } + if (Keyboard.current.sKey.isPressed) { + Vector3 moveBy = transform.forward * -1 * driveSpeed * Time.deltaTime; + transform.position += moveBy; + } + if (Keyboard.current.aKey.isPressed) { + transform.Rotate(turnLeft * Time.deltaTime * turnSpeed); + } + if (Keyboard.current.dKey.isPressed) { + transform.Rotate(turnRight * Time.deltaTime * turnSpeed); + } + } +} diff --git a/Assets/Character/Scripts/CharacterMovementCotroller.cs.meta b/Assets/Character/Scripts/CharacterMovementCotroller.cs.meta new file mode 100644 index 0000000..bb7e742 --- /dev/null +++ b/Assets/Character/Scripts/CharacterMovementCotroller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 30b89096a634b634ea818091dae0462f \ No newline at end of file diff --git a/Assets/Scenes/TestBed.unity b/Assets/Scenes/TestBed.unity new file mode 100644 index 0000000..991e5db --- /dev/null +++ b/Assets/Scenes/TestBed.unity @@ -0,0 +1,1173 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!4 &668653 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 529881195364821077, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!4 &104458553 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1258572041014540273, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!1 &211835891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 211835892} + - component: {fileID: 211835894} + - component: {fileID: 211835893} + m_Layer: 0 + m_Name: Wheel Back Right Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &211835892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 211835891} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071067, y: -0.000000030908616, z: 0.000000030908623, w: 0.7071068} + m_LocalPosition: {x: 0.78276384, y: -0.7559926, z: -1.201448} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1390459182} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &211835893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 211835891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484c6bad1888141449bbccb931f4b3cf, type: 3} + m_Name: + m_EditorClassIdentifier: + wheelModel: {fileID: 104458553} + WheelCollider: {fileID: 0} + steerable: 0 + motorized: 1 +--- !u!146 &211835894 +WheelCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 211835891} + serializedVersion: 2 + m_Center: {x: 0, y: 0, z: 0} + m_Radius: 0.44 + m_SuspensionSpring: + spring: 35000 + damper: 4500 + targetPosition: 0.5 + m_SuspensionDistance: 0.3 + m_ForceAppPointDistance: 0 + m_Mass: 20 + 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: 1 + m_ProvidesContacts: 0 +--- !u!1 &378342381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 378342382} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &378342382 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378342381} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 681941996} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &401533722 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -5287916851642620284, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!64 &401533726 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 401533722} + 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: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: -2560919825813260400, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} +--- !u!1 &595844169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 595844171} + - component: {fileID: 595844170} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &595844170 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595844169} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &595844171 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 595844169} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &681941995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 681941996} + - component: {fileID: 681941999} + - component: {fileID: 681941998} + - component: {fileID: 681941997} + - component: {fileID: 681942000} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &681941996 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681941995} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 3.7312, y: 3.7312, z: 3.7312} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 378342382} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &681941997 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681941995} + 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: 1 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &681941998 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681941995} + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 15303, 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!33 &681941999 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681941995} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &681942000 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681941995} + serializedVersion: 4 + m_Mass: 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: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1266715177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1266715178} + - component: {fileID: 1266715180} + - component: {fileID: 1266715179} + m_Layer: 0 + m_Name: Wheel Front Left Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1266715178 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266715177} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071067, y: -0.000000030908616, z: 0.000000030908623, w: 0.7071068} + m_LocalPosition: {x: -0.77813995, y: -0.7559926, z: 0.9672816} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1390459182} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1266715179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266715177} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484c6bad1888141449bbccb931f4b3cf, type: 3} + m_Name: + m_EditorClassIdentifier: + wheelModel: {fileID: 668653} + WheelCollider: {fileID: 0} + steerable: 1 + motorized: 1 +--- !u!146 &1266715180 +WheelCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266715177} + serializedVersion: 2 + m_Center: {x: 0, y: 0, z: 0} + m_Radius: 0.44 + m_SuspensionSpring: + spring: 35000 + damper: 4500 + targetPosition: 0.5 + m_SuspensionDistance: 0.3 + m_ForceAppPointDistance: 0 + m_Mass: 20 + 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: 1 + m_ProvidesContacts: 0 +--- !u!4 &1363611908 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -6886066687445569438, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1390459181 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1390459182 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!54 &1390459183 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390459181} + serializedVersion: 4 + m_Mass: 1500 + 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!114 &1390459184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390459181} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0665500128106154f8d28bace7476416, type: 3} + m_Name: + m_EditorClassIdentifier: + motorTorque: 2000 + brakeTorque: 2000 + maxSpeed: 20 + steeringRange: 30 + steeringRangeAtMaxSpeed: 10 + centreOfGravityOffset: -1 +--- !u!1 &1416931279 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1416931280} + - component: {fileID: 1416931282} + - component: {fileID: 1416931281} + m_Layer: 0 + m_Name: Wheel Front Right Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1416931280 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416931279} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071067, y: -0.000000030908616, z: 0.000000030908623, w: 0.7071068} + m_LocalPosition: {x: 0.78276384, y: -0.7559926, z: 0.9672816} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1390459182} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1416931281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416931279} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484c6bad1888141449bbccb931f4b3cf, type: 3} + m_Name: + m_EditorClassIdentifier: + wheelModel: {fileID: 1972793135} + WheelCollider: {fileID: 0} + steerable: 1 + motorized: 1 +--- !u!146 &1416931282 +WheelCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416931279} + serializedVersion: 2 + m_Center: {x: 0, y: 0, z: 0} + m_Radius: 0.44 + m_SuspensionSpring: + spring: 35000 + damper: 4500 + targetPosition: 0.5 + m_SuspensionDistance: 0.3 + m_ForceAppPointDistance: 0 + m_Mass: 20 + 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: 1 + m_ProvidesContacts: 0 +--- !u!1001 &1741438778 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalPosition.y + value: 1.427 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + propertyPath: m_Name + value: car + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: 2 + addedObject: {fileID: 1917186237} + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: 4 + addedObject: {fileID: 211835892} + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: 6 + addedObject: {fileID: 1266715178} + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: -1 + addedObject: {fileID: 1416931280} + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: -1 + addedObject: {fileID: 1823552988} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: -1 + addedObject: {fileID: 1390459183} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: -1 + addedObject: {fileID: 1390459184} + - targetCorrespondingSourceObject: {fileID: -5287916851642620284, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + insertIndex: -1 + addedObject: {fileID: 401533726} + m_SourcePrefab: {fileID: 100100000, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} +--- !u!1 &1823552985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1823552988} + - component: {fileID: 1823552987} + - component: {fileID: 1823552986} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1823552986 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823552985} + m_Enabled: 1 +--- !u!20 &1823552987 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823552985} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1823552988 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823552985} + serializedVersion: 2 + m_LocalRotation: {x: 0.12831117, y: -0, z: -0, w: 0.99173397} + m_LocalPosition: {x: 0, y: 2.18, z: -6.78} + m_LocalScale: {x: 1, y: 1.1810253, z: 0.9176579} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1390459182} + m_LocalEulerAnglesHint: {x: 14.744, y: 0, z: 0} +--- !u!1 &1917186236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1917186237} + - component: {fileID: 1917186239} + - component: {fileID: 1917186238} + m_Layer: 0 + m_Name: Wheel Back Left Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1917186237 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917186236} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071067, y: -0.000000030908616, z: 0.000000030908623, w: 0.7071068} + m_LocalPosition: {x: -0.77813995, y: -0.7559926, z: -1.201448} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1390459182} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1917186238 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917186236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484c6bad1888141449bbccb931f4b3cf, type: 3} + m_Name: + m_EditorClassIdentifier: + wheelModel: {fileID: 1363611908} + WheelCollider: {fileID: 0} + steerable: 0 + motorized: 1 +--- !u!146 &1917186239 +WheelCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917186236} + serializedVersion: 2 + m_Center: {x: 0, y: 0, z: 0} + m_Radius: 0.44 + m_SuspensionSpring: + spring: 35000 + damper: 4500 + targetPosition: 0.5 + m_SuspensionDistance: 0.3 + m_ForceAppPointDistance: 0 + m_Mass: 20 + 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: 1 + m_ProvidesContacts: 0 +--- !u!4 &1972793135 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8677156704096194776, guid: cde3b92d14d0b0349b04a21a7734f7fd, type: 3} + m_PrefabInstance: {fileID: 1741438778} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2006752620 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2006752621} + - component: {fileID: 2006752625} + - component: {fileID: 2006752624} + - component: {fileID: 2006752623} + - component: {fileID: 2006752626} + - component: {fileID: 2006752627} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2006752621 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2006752620} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.733, y: 1, z: 0.149} + m_LocalScale: {x: 1, y: 0.9549, z: 2.1828} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &2006752623 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2006752620} + 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.33 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2006752624 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2006752620} + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + 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!33 &2006752625 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2006752620} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2006752626 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2006752620} + serializedVersion: 4 + m_Mass: 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!114 &2006752627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2006752620} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30b89096a634b634ea818091dae0462f, type: 3} + m_Name: + m_EditorClassIdentifier: + driveSpeed: 10 + turnSpeed: 100 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 595844171} + - {fileID: 378342382} + - {fileID: 2006752621} + - {fileID: 1741438778} diff --git a/Assets/Scenes/TestBed.unity.meta b/Assets/Scenes/TestBed.unity.meta new file mode 100644 index 0000000..0bd12ba --- /dev/null +++ b/Assets/Scenes/TestBed.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba9b44b18b68a7c4fa5522f486b7168f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/wheel.jpg b/Assets/wheel.jpg new file mode 100644 index 0000000..7cb40d2 Binary files /dev/null and b/Assets/wheel.jpg differ diff --git a/Assets/wheel.jpg.meta b/Assets/wheel.jpg.meta new file mode 100644 index 0000000..aef8c9f --- /dev/null +++ b/Assets/wheel.jpg.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 6369c12d002a1b348a0f853abe43a22d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..ede5887 --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file