Minor - V0.1.0 - Add assets and setup the env for android handheld

This commit is contained in:
2026-02-01 23:25:01 +01:00
parent b21f1cf48b
commit 76132c2cbe
241 changed files with 189835 additions and 1350 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 23ecf1649990f8e408f4d9de90eb6aa6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8ca3e1dfaf7086f4db297472e7c64db9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
fileFormatVersion: 2
guid: 0b2844ba13c61eb459484abc96bde242
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Audios/engine-loop-1.wav
uploadId: 720603

View File

@@ -0,0 +1,29 @@
fileFormatVersion: 2
guid: a0212963d11a06c4caa454df8e2a2a57
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Audios/skid loop.wav
uploadId: 720603

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 399577dc1923797479e4eedd17201d68
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,81 @@
using UnityEditor;
using UnityEngine;
namespace ArcadeVP
{
[CustomEditor(typeof(ArcadeVehicleController))]
public class AVC_Editor : Editor
{
private const string DiscordUrl = "https://discord.gg/yU82FbNHcu";
private const string TutorilUrl = "https://youtu.be/2Sif8yKKl40";
private const string DocumentationUrl = "/Ash Assets/Arcade Vehicle Physics/Documentation/Documentation.pdf";
private const string RateUrl = "https://assetstore.unity.com/packages/tools/physics/arcade-vehicle-physics-193251#reviews";
private Texture2D headerBackground;
private void OnEnable()
{
// Create a white texture for the header background
headerBackground = new Texture2D(1, 1);
headerBackground.SetPixel(0, 0, Color.black);
headerBackground.Apply();
}
private void OnDisable()
{
// Destroy the texture to free up memory
DestroyImmediate(headerBackground);
}
public override void OnInspectorGUI()
{
// Define the colors
Color primaryColor = new Color(0, 1f, 0); // Green
// Create a header for the script with white background
GUIStyle headerStyle = new GUIStyle(EditorStyles.boldLabel);
headerStyle.fontSize = 27;
headerStyle.alignment = TextAnchor.MiddleCenter;
headerStyle.normal.textColor = primaryColor;
headerStyle.normal.background = headerBackground;
headerStyle.padding = new RectOffset(1, 1, 1, 1);
GUILayout.Space(10f);
GUILayout.Label("Arcade Vehicle Physics", headerStyle);
GUILayout.Space(10f);
// Create the buttons
GUIStyle buttonStyle = new GUIStyle(GUI.skin.button);
buttonStyle.normal.textColor = Color.white;
buttonStyle.fontSize = 12;
buttonStyle.alignment = TextAnchor.MiddleCenter;
buttonStyle.padding = new RectOffset(5, 5, 5, 5);
GUILayout.BeginHorizontal();
if (GUILayout.Button(new GUIContent("Join Discord", null, "Join the Discord community"), buttonStyle, GUILayout.Height(20f), GUILayout.ExpandWidth(true)))
{
Application.OpenURL(DiscordUrl);
}
if (GUILayout.Button(new GUIContent("Tutorial", null, "Watch videos on YouTube"), buttonStyle, GUILayout.Height(20f), GUILayout.ExpandWidth(true)))
{
Application.OpenURL(TutorilUrl);
}
if (GUILayout.Button(new GUIContent("Documentation", null, "Read the documentation"), buttonStyle, GUILayout.Height(20f), GUILayout.ExpandWidth(true)))
{
string doc_path = Application.dataPath + DocumentationUrl;
Application.OpenURL("file://" + doc_path);
}
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
if (GUILayout.Button(new GUIContent("Rate the Asset", null, "Rate this asset on the Unity Asset Store"), buttonStyle, GUILayout.Height(20f), GUILayout.ExpandWidth(true)))
{
Application.OpenURL(RateUrl);
}
GUILayout.EndHorizontal();
GUILayout.Space(10f);
// Display all public variables of the SimcadeVehicleController script
DrawDefaultInspector();
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: c572eea6db690a945a5a8669b00c1c01
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Editor/AVC_Editor.cs
uploadId: 720603

View File

@@ -0,0 +1,99 @@
using UnityEditor;
using UnityEditor.Presets;
using UnityEngine;
namespace ArcadeVP
{
public class AVP_ProjectSettings : EditorWindow
{
public static bool AVP_ProjectSettings_Imported = false;
public class ImportAssetPrompt : AssetPostprocessor
{
private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
{
//Debug.Log("Asset imported: " + AVP_ProjectSettings_Imported);
if (AVP_ProjectSettings_Imported)
{
return;
}
foreach (string assetPath in importedAssets)
{
if (assetPath.Contains("Assets/Ash Assets/Arcade Vehicle Physics/Project Settings")) // Adjust to match your asset's folder
{
ShowWindow();
break;
}
//else
//{
// Debug.Log("assetPath does not Contains");
//}
}
}
}
public static void ShowWindow()
{
AVP_ProjectSettings window = GetWindow<AVP_ProjectSettings>("Import Project Settings");
window.minSize = new Vector2(300, 150);
window.Focus(); // Bring the window to the front
}
private void OnGUI()
{
GUILayout.Label("Import Project Settings", EditorStyles.boldLabel);
GUILayout.Label("Would you like to import the project settings required for Arcade Vehicle Physics?", EditorStyles.wordWrappedLabel);
GUILayout.Space(20);
if (GUILayout.Button("Yes, Import Settings"))
{
ImportProjectSettings();
AVP_ProjectSettings_Imported = true; // Mark as imported
Close();
}
if (GUILayout.Button("No, Skip"))
{
AVP_ProjectSettings_Imported = true; // Mark as imported, even if skipped
Close();
}
}
private static void ImportProjectSettings()
{
ApplyPreset("Assets/Ash Assets/Arcade Vehicle Physics/Project Settings/Input Settings Preset.preset", "ProjectSettings/InputManager.asset");
ApplyPreset("Assets/Ash Assets/Arcade Vehicle Physics/Project Settings/Physics Settings Preset.preset", "ProjectSettings/DynamicsManager.asset");
ApplyPreset("Assets/Ash Assets/Arcade Vehicle Physics/Project Settings/Tag and Layers Preset.preset", "ProjectSettings/TagManager.asset");
Debug.Log("Project settings have been successfully imported.");
}
private static void ApplyPreset(string presetPath, string settingsPath)
{
var preset = AssetDatabase.LoadAssetAtPath<Preset>(presetPath);
if (preset == null)
{
Debug.LogWarning($"Preset not found at path: {presetPath}");
return;
}
var settingsAsset = AssetDatabase.LoadAssetAtPath<Object>(settingsPath);
if (settingsAsset == null)
{
Debug.LogWarning($"Settings not found at path: {settingsPath}");
return;
}
if (preset.ApplyTo(settingsAsset))
{
Debug.Log($"Preset applied successfully to {settingsPath}");
}
else
{
Debug.LogWarning($"Failed to apply preset to {settingsPath}");
}
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 609a664176f92cd45896f847b067a9f5
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Editor/AVP_ProjectSettings.cs
uploadId: 720603

View File

@@ -0,0 +1,324 @@
using UnityEngine;
using UnityEditor;
using System;
namespace ArcadeVP
{
public class ArcadeVehicleCreator : EditorWindow
{
ArcadeVehicleController preset;
Transform VehicleParent;
Transform wheelFL;
Transform wheelFR;
Transform wheelRL;
Transform wheelRR;
MeshRenderer bodyMesh;
MeshRenderer wheelMesh;
private GameObject NewVehicle;
private const string DiscordUrl = "https://discord.gg/yU82FbNHcu";
private const string TutorilUrl = "https://youtu.be/2Sif8yKKl40?si=ZWJkGdyLkn4o0IHl";
private const string DocumentationUrl = "/Ash Assets/Arcade Vehicle Physics/Documentation/Documentation.pdf";
private const string AshDevAssets = "https://assetstore.unity.com/publishers/52093";
[MenuItem("Tools/Arcade Vehicle Physics")]
static void OpenWindow()
{
ArcadeVehicleCreator vehicleCreatorWindow = (ArcadeVehicleCreator)GetWindow(typeof(ArcadeVehicleCreator));
vehicleCreatorWindow.minSize = new Vector2(400, 500);
vehicleCreatorWindow.Show();
}
private void OnGUI()
{
DrawHelpAndTutorialsSection();
DrawVehicleCreation();
}
private void DrawHelpAndTutorialsSection()
{
// Custom styles
var sectionStyle = new GUIStyle("Box")
{
padding = new RectOffset(10, 10, 10, 10),
margin = new RectOffset(5, 5, 5, 5)
};
var headerStyle = new GUIStyle(EditorStyles.boldLabel)
{
fontSize = 14,
alignment = TextAnchor.MiddleLeft,
normal = { textColor = new Color(0.2f, 0.6f, 1f) }
};
var buttonStyle = new GUIStyle(GUI.skin.button)
{
fontSize = 12,
fontStyle = FontStyle.Bold,
alignment = TextAnchor.MiddleLeft,
padding = new RectOffset(35, 10, 5, 5)
};
EditorGUILayout.BeginVertical(sectionStyle);
// Header
EditorGUILayout.LabelField("Help & Tutorials", headerStyle);
EditorGUILayout.Space(5);
// First Row
EditorGUILayout.BeginHorizontal();
{
// Documentation Button
GUI.backgroundColor = new Color(0.9f, 0.9f, 0.9f);
if (GUILayout.Button(new GUIContent(" Documentation", EditorGUIUtility.IconContent("_Help").image),
buttonStyle, GUILayout.Height(28)))
{
string doc_path = Application.dataPath + DocumentationUrl;
Application.OpenURL("file://" + doc_path);
}
// Tutorial Button
GUI.backgroundColor = new Color(1f, 0.8f, 0.8f);
if (GUILayout.Button(new GUIContent(" Video Tutorials", EditorGUIUtility.IconContent("VideoPlayer Icon").image),
buttonStyle, GUILayout.Height(28)))
{
Application.OpenURL(TutorilUrl);
}
}
EditorGUILayout.EndHorizontal();
// Second Row
EditorGUILayout.BeginHorizontal();
{
// Discord Button
GUI.backgroundColor = new Color(0.8f, 0.8f, 1f);
if (GUILayout.Button(new GUIContent(" Join Discord", EditorGUIUtility.IconContent("BuildSettings.Web.Small").image),
buttonStyle, GUILayout.Height(28)))
{
Application.OpenURL(DiscordUrl);
}
// More Ash Dev Assets Button
GUI.backgroundColor = new Color(0.8f, 1f, 0.8f);
if (GUILayout.Button(new GUIContent(" Ash Dev Assets", EditorGUIUtility.IconContent("AssetStore Icon").image),
buttonStyle, GUILayout.Height(28)))
{
Application.OpenURL(AshDevAssets);
}
}
EditorGUILayout.EndHorizontal();
GUI.backgroundColor = Color.white; // Reset background color
EditorGUILayout.EndVertical();
}
private void DrawVehicleCreation()
{
// Styles
var headerStyle = new GUIStyle(EditorStyles.boldLabel)
{
fontSize = 16,
alignment = TextAnchor.MiddleLeft,
normal = { textColor = new Color(0.2f, 0.8f, 0.2f) },
margin = new RectOffset(5, 5, 10, 10)
};
var sectionStyle = new GUIStyle(EditorStyles.helpBox)
{
padding = new RectOffset(10, 10, 10, 10),
margin = new RectOffset(5, 5, 5, 5)
};
var sectionStyleFull = new GUIStyle("Box")
{
padding = new RectOffset(10, 10, 10, 10),
margin = new RectOffset(5, 5, 5, 5)
};
var buttonStyle = new GUIStyle(GUI.skin.button)
{
fontSize = 12,
fontStyle = FontStyle.Bold,
fixedHeight = 30,
margin = new RectOffset(5, 5, 8, 8)
};
EditorGUILayout.BeginVertical(sectionStyleFull);
// Main Layout
EditorGUILayout.BeginVertical();
// Title
headerStyle.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.LabelField("Arcade Vehicle Creator", headerStyle);
GUI.backgroundColor = new Color(0.3f, 0.8f, 0.3f);
// Preset Section
EditorGUILayout.BeginVertical(sectionStyle);
{
preset = EditorGUILayout.ObjectField("Vehicle Preset", preset,
typeof(ArcadeVehicleController), true) as ArcadeVehicleController;
}
EditorGUILayout.EndVertical();
// Vehicle Setup Section
EditorGUILayout.BeginVertical(sectionStyle);
{
// Vehicle Parent
VehicleParent = EditorGUILayout.ObjectField("Vehicle Parent", VehicleParent,
typeof(Transform), true) as Transform;
// Wheels Group
EditorGUILayout.LabelField("Wheels", EditorStyles.boldLabel);
EditorGUI.indentLevel++;
wheelFL = EditorGUILayout.ObjectField("Front Left", wheelFL,
typeof(Transform), true) as Transform;
wheelFR = EditorGUILayout.ObjectField("Front Right", wheelFR,
typeof(Transform), true) as Transform;
wheelRL = EditorGUILayout.ObjectField("Rear Left", wheelRL,
typeof(Transform), true) as Transform;
wheelRR = EditorGUILayout.ObjectField("Rear Right", wheelRR,
typeof(Transform), true) as Transform;
EditorGUI.indentLevel--;
}
EditorGUILayout.EndVertical();
if (GUILayout.Button("Create Vehicle", buttonStyle))
{
createVehicle();
}
GUI.backgroundColor = new Color(0.3f, 0.6f, 0.9f);
// Mesh Setup Section
EditorGUILayout.BeginVertical(sectionStyle);
{
bodyMesh = EditorGUILayout.ObjectField("Body Mesh", bodyMesh,
typeof(MeshRenderer), true) as MeshRenderer;
wheelMesh = EditorGUILayout.ObjectField("Wheel Mesh", wheelMesh,
typeof(MeshRenderer), true) as MeshRenderer;
}
EditorGUILayout.EndVertical();
if (GUILayout.Button("Adjust Colliders", buttonStyle))
{
adjustColliders();
}
EditorGUILayout.EndVertical();
EditorGUILayout.EndVertical();
}
private void adjustColliders()
{
if (NewVehicle.GetComponent<BoxCollider>())
{
NewVehicle.GetComponent<BoxCollider>().center = Vector3.zero;
NewVehicle.GetComponent<BoxCollider>().size = bodyMesh.bounds.size;
}
if (NewVehicle.GetComponent<CapsuleCollider>())
{
NewVehicle.GetComponent<CapsuleCollider>().center = Vector3.zero;
NewVehicle.GetComponent<CapsuleCollider>().height = bodyMesh.bounds.size.z;
NewVehicle.GetComponent<CapsuleCollider>().radius = bodyMesh.bounds.size.x / 2;
}
Vector3 SpheareRBOffset = new Vector3(NewVehicle.transform.position.x,
wheelFL.position.y + bodyMesh.bounds.extents.y - wheelMesh.bounds.size.y / 2,
NewVehicle.transform.position.z);
NewVehicle.GetComponent<ArcadeVehicleController>().skidWidth = wheelMesh.bounds.size.x / 2;
if (NewVehicle.transform.Find("SphereRB"))
{
NewVehicle.transform.Find("SphereRB").GetComponent<SphereCollider>().radius = bodyMesh.bounds.extents.y;
NewVehicle.transform.Find("SphereRB").position = SpheareRBOffset;
}
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("Skid marks FL").position = wheelFL.position - Vector3.up * (wheelMesh.bounds.size.y / 2 - 0.02f);
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("Skid marks FR").position = wheelFR.position - Vector3.up * (wheelMesh.bounds.size.y / 2 - 0.02f);
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("Skid marks RL").position = wheelRL.position - Vector3.up * (wheelMesh.bounds.size.y / 2 - 0.02f);
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("Skid marks RR").position = wheelRR.position - Vector3.up * (wheelMesh.bounds.size.y / 2 - 0.02f);
}
private void createVehicle()
{
Make_Vehicle_Ready_For_Setup();
NewVehicle = Instantiate(preset.gameObject, bodyMesh.bounds.center, VehicleParent.rotation);
NewVehicle.name = "Arcade_" + VehicleParent.name;
GameObject.DestroyImmediate(NewVehicle.transform.Find("Mesh").Find("Body").GetChild(0).gameObject);
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFL"))
{
GameObject.DestroyImmediate(NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFL").Find("WheelFL Axel").GetChild(0).gameObject);
}
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFR"))
{
GameObject.DestroyImmediate(NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFR").Find("WheelFR Axel").GetChild(0).gameObject);
}
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRL"))
{
GameObject.DestroyImmediate(NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRL").Find("WheelRL Axel").GetChild(0).gameObject);
}
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRR"))
{
GameObject.DestroyImmediate(NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRR").Find("WheelRR Axel").GetChild(0).gameObject);
}
VehicleParent.parent = NewVehicle.transform.Find("Mesh").Find("Body");
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").position = VehicleParent.position;
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFL"))
{
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFL").position = wheelFL.position;
wheelFL.parent = NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFL").Find("WheelFL Axel");
}
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFR"))
{
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFR").position = wheelFR.position;
wheelFR.parent = NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelFR").Find("WheelFR Axel");
}
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRL"))
{
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRL").position = wheelRL.position;
wheelRL.parent = NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRL").Find("WheelRL Axel");
}
if (NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRR"))
{
NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRR").position = wheelRR.position;
wheelRR.parent = NewVehicle.transform.Find("Mesh").transform.Find("Wheels").Find("WheelRR").Find("WheelRR Axel");
}
}
private void Make_Vehicle_Ready_For_Setup()
{
var AllVehicleColliders = VehicleParent.GetComponentsInChildren<Collider>();
foreach (var collider in AllVehicleColliders)
{
DestroyImmediate(collider);
}
var AllRigidBodies = VehicleParent.GetComponentsInChildren<Rigidbody>();
foreach (var rb in AllRigidBodies)
{
DestroyImmediate(rb);
}
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 87cfd02682b2dfe47b402c6f63da65ca
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Editor/ArcadeVehicleCreator.cs
uploadId: 720603

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0543b7fa875648d4a81a763b13049213
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,78 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Asphalt
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _EMISSION
m_LightmapFlags: 2
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0}
m_Scale: {x: 30, y: 30}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0}
m_Scale: {x: 30, y: 30}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.07058824, g: 0.047058824, b: 0.1882353, a: 1}
- _EmissionColor: {r: 0.27287287, g: 0.33990112, b: 0.5943396, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 9572b13f22fec7044988cc2294c1486c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Materials/Asphalt.mat
uploadId: 720603

View File

@@ -0,0 +1,15 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!134 &13400000
PhysicsMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Friction
serializedVersion: 2
m_DynamicFriction: 1.0000002
m_StaticFriction: 1
m_Bounciness: 0
m_FrictionCombine: 3
m_BounceCombine: 2

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: ce8f2e0169709cc4da4d8131aec6cef1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 13400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Materials/Friction.physicMaterial
uploadId: 720603

View File

@@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ParticleSmokeWhite
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: eb048d44d163dfd42ae29781d3984dfe, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _TintColor: {r: 0.2924528, g: 0.2924528, b: 0.2924528, a: 0.75686276}
m_BuildTextureStacks: []
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 5f4ba2523ea1de643bb0357f291c78e6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Materials/ParticleSmokeWhite.mat
uploadId: 720603

View File

@@ -0,0 +1,155 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SkidMark
m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _FLIPBOOKBLENDING_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0.1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _FlipbookBlending: 0
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Shininess: 0
- _Smoothness: 0.5
- _SmoothnessSource: 0
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _UVSec: 0
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &1256701262612938320
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: dc3a589de442f2d45be6cc284f8509e3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Materials/SkidMark.mat
uploadId: 720603

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c16d792f8e8249642b6e2be6b3a49e79
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: d63811aeb2255224d9f56884b749ea2d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Prefabs/Ambulance.prefab
uploadId: 720603

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: b645066e3f4574e438eadecd9d295b19
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Prefabs/Car Preset.prefab
uploadId: 720603

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: c9e904412020b334d85c8aec5b0b2711
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Prefabs/Hatchback car.prefab
uploadId: 720603

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 4b881e8a1a6b7604480886a1a27f279a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Prefabs/Police Car.prefab
uploadId: 720603

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 72f35a516bdccff428bc5431ebace285
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Prefabs/Sedan car kartlike.prefab
uploadId: 720603

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: d9a231df7003ffd4688c25c36b65c296
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Prefabs/Sedan car.prefab
uploadId: 720603

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9ca9b5c14aa6e744ea802f44811229db
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 369e74935bbac974aad41f421c964fe3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2655988077585873504
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Project Settings/Input Settings
Preset.preset
uploadId: 720603

View File

@@ -0,0 +1,295 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!181963792 &2655988077585873504
Preset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Physics Settings Preset
m_TargetType:
m_NativeTypeID: 55
m_ManagedTypePPtr: {fileID: 0}
m_ManagedTypeFallback:
m_Properties:
- target: {fileID: 0}
propertyPath: m_Gravity.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_Gravity.y
value: -20
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_Gravity.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_DefaultMaterial
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_BounceThreshold
value: 2
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_DefaultMaxDepenetrationVelocity
value: 10
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_SleepThreshold
value: 0.005
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_DefaultContactOffset
value: 0.0001
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_DefaultSolverIterations
value: 6
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_DefaultSolverVelocityIterations
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_QueriesHitBackfaces
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_QueriesHitTriggers
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_EnableAdaptiveForce
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ClothInterCollisionDistance
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ClothInterCollisionStiffness
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ContactsGeneration
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.size
value: 32
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[0]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[1]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[2]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[3]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[4]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[5]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[6]
value: 4294967167
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[7]
value: 4294966975
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[8]
value: 4294967167
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[9]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[10]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[11]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[12]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[13]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[14]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[15]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[16]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[17]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[18]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[19]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[20]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[21]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[22]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[23]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[24]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[25]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[26]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[27]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[28]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[29]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[30]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_LayerCollisionMatrix.Array.data[31]
value: 4294967295
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_AutoSimulation
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_AutoSyncTransforms
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ReuseCollisionCallbacks
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ClothInterCollisionSettingsToggle
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ClothGravity.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ClothGravity.y
value: -9.81
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ClothGravity.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_ContactPairsMode
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_BroadphaseType
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldBounds.m_Center.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldBounds.m_Center.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldBounds.m_Center.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldBounds.m_Extent.x
value: 250
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldBounds.m_Extent.y
value: 250
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldBounds.m_Extent.z
value: 250
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_WorldSubdivisions
value: 8
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_FrictionType
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_EnableEnhancedDeterminism
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_EnableUnifiedHeightmaps
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_SolverType
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_DefaultMaxAngularSpeed
value: 100
objectReference: {fileID: 0}
m_ExcludedProperties: []

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 3bf9b619c0ee5634e8e7e73a7c6e7837
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2655988077585873504
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Project Settings/Physics Settings
Preset.preset
uploadId: 720603

View File

@@ -0,0 +1,167 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!181963792 &2655988077585873504
Preset:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Tag and Layers Preset
m_TargetType:
m_NativeTypeID: 78
m_ManagedTypePPtr: {fileID: 0}
m_ManagedTypeFallback:
m_Properties:
- target: {fileID: 0}
propertyPath: tags.Array.size
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.size
value: 32
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[0]
value: Default
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[1]
value: TransparentFX
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[2]
value: Ignore Raycast
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[3]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[4]
value: Water
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[5]
value: UI
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[6]
value: drivable
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[7]
value: carbody
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[8]
value: SphereRB
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[9]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[10]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[11]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[12]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[13]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[14]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[15]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[16]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[17]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[18]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[19]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[20]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[21]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[22]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[23]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[24]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[25]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[26]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[27]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[28]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[29]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[30]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: layers.Array.data[31]
value:
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_SortingLayers.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_SortingLayers.Array.data[0].name
value: Default
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_SortingLayers.Array.data[0].uniqueID
value: 0
objectReference: {fileID: 0}
- target: {fileID: 0}
propertyPath: m_SortingLayers.Array.data[0].locked
value: 0
objectReference: {fileID: 0}
m_ExcludedProperties: []

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 6a39c167711ffdb4193bbfb19be707d9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2655988077585873504
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Project Settings/Tag and Layers
Preset.preset
uploadId: 720603

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bb839db6b9c278e42938389bccc1fa0b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,275 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ArcadeVP
{
public class ArcadeVehicleController : MonoBehaviour
{
public enum groundCheck { rayCast, sphereCaste };
public enum MovementMode { Velocity, AngularVelocity };
public MovementMode movementMode;
public groundCheck GroundCheck;
public LayerMask drivableSurface;
public float MaxSpeed, accelaration, turn, gravity = 7f, downforce = 5f;
[Tooltip("if true : can turn vehicle in air")]
public bool AirControl = false;
[Tooltip("if true : vehicle will drift instead of brake while holding space")]
public bool kartLike = false;
[Tooltip("turn more while drifting (while holding space) only if kart Like is true")]
public float driftMultiplier = 1.5f;
public Rigidbody rb, carBody;
[HideInInspector]
public RaycastHit hit;
public AnimationCurve frictionCurve;
public AnimationCurve turnCurve;
public PhysicsMaterial frictionMaterial;
[Header("Visuals")]
public Transform BodyMesh;
public Transform[] FrontWheels = new Transform[2];
public Transform[] RearWheels = new Transform[2];
[HideInInspector]
public Vector3 carVelocity;
[Range(0, 10)]
public float BodyTilt;
[Header("Audio settings")]
public AudioSource engineSound;
[Range(0, 1)]
public float minPitch;
[Range(1, 3)]
public float MaxPitch;
public AudioSource SkidSound;
[HideInInspector]
public float skidWidth;
private float radius, steeringInput, accelerationInput, brakeInput;
private Vector3 origin;
private void Start()
{
radius = rb.GetComponent<SphereCollider>().radius;
if (movementMode == MovementMode.AngularVelocity)
{
Physics.defaultMaxAngularSpeed = 100;
}
}
private void Update()
{
Visuals();
AudioManager();
}
public void ProvideInputs(float _steeringInput, float _accelarationInput, float _brakeInput)
{
steeringInput = _steeringInput;
accelerationInput = _accelarationInput;
brakeInput = _brakeInput;
}
public void AudioManager()
{
engineSound.pitch = Mathf.Lerp(minPitch, MaxPitch, Mathf.Abs(carVelocity.z) / MaxSpeed);
if (Mathf.Abs(carVelocity.x) > 10 && grounded())
{
SkidSound.mute = false;
}
else
{
SkidSound.mute = true;
}
}
void FixedUpdate()
{
carVelocity = carBody.transform.InverseTransformDirection(carBody.linearVelocity);
if (Mathf.Abs(carVelocity.x) > 0)
{
//changes friction according to sideways speed of car
frictionMaterial.dynamicFriction = frictionCurve.Evaluate(Mathf.Abs(carVelocity.x / 100));
}
if (grounded())
{
//turnlogic
float sign = Mathf.Sign(carVelocity.z);
float TurnMultiplyer = turnCurve.Evaluate(carVelocity.magnitude / MaxSpeed);
if (kartLike && brakeInput > 0.1f) { TurnMultiplyer *= driftMultiplier; } //turn more if drifting
if (accelerationInput > 0.1f || carVelocity.z > 1)
{
carBody.AddTorque(Vector3.up * steeringInput * sign * turn * 100 * TurnMultiplyer);
}
else if (accelerationInput < -0.1f || carVelocity.z < -1)
{
carBody.AddTorque(Vector3.up * steeringInput * sign * turn * 100 * TurnMultiplyer);
}
// mormal brakelogic
if (!kartLike)
{
if (brakeInput > 0.1f)
{
rb.constraints = RigidbodyConstraints.FreezeRotationX;
}
else
{
rb.constraints = RigidbodyConstraints.None;
}
}
//accelaration logic
if (movementMode == MovementMode.AngularVelocity)
{
if (Mathf.Abs(accelerationInput) > 0.1f && brakeInput < 0.1f && !kartLike)
{
rb.angularVelocity = Vector3.Lerp(rb.angularVelocity, carBody.transform.right * accelerationInput * MaxSpeed / radius, accelaration * Time.deltaTime);
}
else if (Mathf.Abs(accelerationInput) > 0.1f && kartLike)
{
rb.angularVelocity = Vector3.Lerp(rb.angularVelocity, carBody.transform.right * accelerationInput * MaxSpeed / radius, accelaration * Time.deltaTime);
}
}
else if (movementMode == MovementMode.Velocity)
{
if (Mathf.Abs(accelerationInput) > 0.1f && brakeInput < 0.1f && !kartLike)
{
rb.linearVelocity = Vector3.Lerp(rb.linearVelocity, carBody.transform.forward * accelerationInput * MaxSpeed, accelaration / 10 * Time.deltaTime);
}
else if (Mathf.Abs(accelerationInput) > 0.1f && kartLike)
{
rb.linearVelocity = Vector3.Lerp(rb.linearVelocity, carBody.transform.forward * accelerationInput * MaxSpeed, accelaration / 10 * Time.deltaTime);
}
}
// down froce
rb.AddForce(-transform.up * downforce * rb.mass);
//body tilt
carBody.MoveRotation(Quaternion.Slerp(carBody.rotation, Quaternion.FromToRotation(carBody.transform.up, hit.normal) * carBody.transform.rotation, 0.12f));
}
else
{
if (AirControl)
{
//turnlogic
float TurnMultiplyer = turnCurve.Evaluate(carVelocity.magnitude / MaxSpeed);
carBody.AddTorque(Vector3.up * steeringInput * turn * 100 * TurnMultiplyer);
}
carBody.MoveRotation(Quaternion.Slerp(carBody.rotation, Quaternion.FromToRotation(carBody.transform.up, Vector3.up) * carBody.transform.rotation, 0.02f));
rb.linearVelocity = Vector3.Lerp(rb.linearVelocity, rb.linearVelocity + Vector3.down * gravity, Time.deltaTime * gravity);
}
}
public void Visuals()
{
//tires
foreach (Transform FW in FrontWheels)
{
FW.localRotation = Quaternion.Slerp(FW.localRotation, Quaternion.Euler(FW.localRotation.eulerAngles.x,
30 * steeringInput, FW.localRotation.eulerAngles.z), 0.7f * Time.deltaTime / Time.fixedDeltaTime);
FW.GetChild(0).localRotation = rb.transform.localRotation;
}
RearWheels[0].localRotation = rb.transform.localRotation;
RearWheels[1].localRotation = rb.transform.localRotation;
//Body
if (carVelocity.z > 1)
{
BodyMesh.localRotation = Quaternion.Slerp(BodyMesh.localRotation, Quaternion.Euler(Mathf.Lerp(0, -5, carVelocity.z / MaxSpeed),
BodyMesh.localRotation.eulerAngles.y, BodyTilt * steeringInput), 0.4f * Time.deltaTime / Time.fixedDeltaTime);
}
else
{
BodyMesh.localRotation = Quaternion.Slerp(BodyMesh.localRotation, Quaternion.Euler(0, 0, 0), 0.4f * Time.deltaTime / Time.fixedDeltaTime);
}
if (kartLike)
{
if (brakeInput > 0.1f)
{
BodyMesh.parent.localRotation = Quaternion.Slerp(BodyMesh.parent.localRotation,
Quaternion.Euler(0, 45 * steeringInput * Mathf.Sign(carVelocity.z), 0),
0.1f * Time.deltaTime / Time.fixedDeltaTime);
}
else
{
BodyMesh.parent.localRotation = Quaternion.Slerp(BodyMesh.parent.localRotation,
Quaternion.Euler(0, 0, 0),
0.1f * Time.deltaTime / Time.fixedDeltaTime);
}
}
}
public bool grounded() //checks for if vehicle is grounded or not
{
origin = rb.position + rb.GetComponent<SphereCollider>().radius * Vector3.up;
var direction = -transform.up;
var maxdistance = rb.GetComponent<SphereCollider>().radius + 0.2f;
if (GroundCheck == groundCheck.rayCast)
{
if (Physics.Raycast(rb.position, Vector3.down, out hit, maxdistance, drivableSurface))
{
return true;
}
else
{
return false;
}
}
else if (GroundCheck == groundCheck.sphereCaste)
{
if (Physics.SphereCast(origin, radius + 0.1f, direction, out hit, maxdistance, drivableSurface))
{
return true;
}
else
{
return false;
}
}
else { return false; }
}
private void OnDrawGizmos()
{
//debug gizmos
radius = rb.GetComponent<SphereCollider>().radius;
float width = 0.02f;
if (!Application.isPlaying)
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireCube(rb.transform.position + ((radius + width) * Vector3.down), new Vector3(2 * radius, 2 * width, 4 * radius));
if (GetComponent<BoxCollider>())
{
Gizmos.color = Color.green;
Gizmos.DrawWireCube(transform.position, GetComponent<BoxCollider>().size);
}
}
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: f2d69c44041501f4aab1c355410d67b2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Scripts/ArcadeVehicleController.cs
uploadId: 720603

View File

@@ -0,0 +1,42 @@
using UnityEngine;
using UnityEngine.InputSystem;
namespace ArcadeVP
{
public class InputManager_ArcadeVP : MonoBehaviour
{
public ArcadeVehicleController arcadeVehicleController;
[HideInInspector] public float horizontal;
[HideInInspector] public float vertical;
[HideInInspector] public float jump;
private PlayerInput _playerInput;
private InputAction _steerAction;
private InputAction _accelAction;
private InputAction _brakeAction;
private void Awake()
{
_playerInput = GetComponent<PlayerInput>();
if (_playerInput == null)
{
Debug.LogError("PlayerInput component not found on the GameObject.");
return;
}
_steerAction = _playerInput.actions["Steer"];
_accelAction = _playerInput.actions["Accelerate"];
_brakeAction = _playerInput.actions["HandBrake"];
}
private void Update()
{
horizontal = _steerAction?.ReadValue<float>() ?? 0f;
vertical = _accelAction?.ReadValue<float>() ?? 0f;
jump = _brakeAction?.ReadValue<float>() ?? 0f;
arcadeVehicleController.ProvideInputs(horizontal, vertical, jump);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 1da3f11c6be0a9a45836cbfe050297fc
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Scripts/InputManager_ArcadeVP.cs
uploadId: 720603

View File

@@ -0,0 +1,74 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ArcadeVP
{
public class SkidMarks : MonoBehaviour
{
private TrailRenderer skidMark;
private ParticleSystem smoke;
public ArcadeVehicleController carController;
float fadeOutSpeed;
private void Awake()
{
smoke = GetComponent<ParticleSystem>();
skidMark = GetComponent<TrailRenderer>();
skidMark.emitting = false;
skidMark.startWidth = carController.skidWidth;
}
private void OnEnable()
{
skidMark.enabled = true;
}
private void OnDisable()
{
skidMark.enabled = false;
}
// Update is called once per frame
void FixedUpdate()
{
if (carController.grounded())
{
if (Mathf.Abs(carController.carVelocity.x) > 10)
{
fadeOutSpeed = 0f;
skidMark.materials[0].color = Color.black;
skidMark.emitting = true;
}
else
{
skidMark.emitting = false;
}
}
else
{
skidMark.emitting = false;
}
if (!skidMark.emitting)
{
fadeOutSpeed += Time.deltaTime / 2;
Color m_color = Color.Lerp(Color.black, new Color(0f, 0f, 0f, 0f), fadeOutSpeed);
skidMark.materials[0].color = m_color;
if (fadeOutSpeed > 1)
{
skidMark.Clear();
}
}
// smoke
if (skidMark.emitting == true)
{
smoke.Play();
}
else { smoke.Stop(); }
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 1337f33b3654d9a4fa8f2d3f24ceb6d2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Scripts/SkidMarks.cs
uploadId: 720603

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c136d685b0bb930448a9a61e6c319ae9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,103 @@
fileFormatVersion: 2
guid: eb048d44d163dfd42ae29781d3984dfe
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 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
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 193251
packageName: Arcade Vehicle Physics
packageVersion: 1.4
assetPath: Assets/Ash Assets/Arcade Vehicle Physics/Textures/ParticleCloudWhite.png
uploadId: 720603