Compare commits
No commits in common. "16d5b3faad8cf8a84bb13082ef45d22b52a219fc" and "2a0ed5cd6799780522dcbf8f4a69485c7289fda7" have entirely different histories.
16d5b3faad
...
2a0ed5cd67
20 changed files with 270 additions and 5326 deletions
RunningLateGame
Assets
Material.meta
Material
Prefabs
Scenes
Scripts
Starter Assets/Runtime/ThirdPersonController/Character/Materials
TerrainSampleAssets
ProjectSettings
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: af31566b5077e6045848d15729793e85
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,137 +0,0 @@
|
||||||
%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: nothing
|
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords:
|
|
||||||
- _ALPHAPREMULTIPLY_ON
|
|
||||||
- _SURFACE_TYPE_TRANSPARENT
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: 3000
|
|
||||||
stringTagMap:
|
|
||||||
RenderType: Transparent
|
|
||||||
disabledShaderPasses:
|
|
||||||
- DepthOnly
|
|
||||||
- SHADOWCASTER
|
|
||||||
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:
|
|
||||||
- _AlphaClip: 0
|
|
||||||
- _AlphaToMask: 0
|
|
||||||
- _Blend: 0
|
|
||||||
- _BlendModePreserveSpecular: 1
|
|
||||||
- _BumpScale: 1
|
|
||||||
- _ClearCoatMask: 0
|
|
||||||
- _ClearCoatSmoothness: 0
|
|
||||||
- _Cull: 2
|
|
||||||
- _Cutoff: 0.5
|
|
||||||
- _DetailAlbedoMapScale: 1
|
|
||||||
- _DetailNormalMapScale: 1
|
|
||||||
- _DstBlend: 10
|
|
||||||
- _DstBlendAlpha: 10
|
|
||||||
- _EnvironmentReflections: 1
|
|
||||||
- _GlossMapScale: 0
|
|
||||||
- _Glossiness: 0
|
|
||||||
- _GlossyReflections: 0
|
|
||||||
- _Metallic: 0
|
|
||||||
- _OcclusionStrength: 1
|
|
||||||
- _Parallax: 0.005
|
|
||||||
- _QueueOffset: 0
|
|
||||||
- _ReceiveShadows: 1
|
|
||||||
- _Smoothness: 0
|
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
|
||||||
- _SrcBlendAlpha: 1
|
|
||||||
- _Surface: 1
|
|
||||||
- _WorkflowMode: 1
|
|
||||||
- _ZWrite: 0
|
|
||||||
m_Colors:
|
|
||||||
- _BaseColor: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
- _Color: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!114 &8248635986458825645
|
|
||||||
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:
|
|
||||||
version: 7
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: c8307bc3f06474c428efb0638b4ee7d4
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 2100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
BIN
RunningLateGame/Assets/Prefabs/car.fbx
(Stored with Git LFS)
BIN
RunningLateGame/Assets/Prefabs/car.fbx
(Stored with Git LFS)
Binary file not shown.
|
@ -1,109 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: ea8f4c36c1c70304680c14a8eaa0a194
|
|
||||||
ModelImporter:
|
|
||||||
serializedVersion: 22200
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
materials:
|
|
||||||
materialImportMode: 0
|
|
||||||
materialName: 0
|
|
||||||
materialSearch: 1
|
|
||||||
materialLocation: 1
|
|
||||||
animations:
|
|
||||||
legacyGenerateAnimations: 4
|
|
||||||
bakeSimulation: 0
|
|
||||||
resampleCurves: 1
|
|
||||||
optimizeGameObjects: 0
|
|
||||||
removeConstantScaleCurves: 0
|
|
||||||
motionNodeName:
|
|
||||||
rigImportErrors:
|
|
||||||
rigImportWarnings:
|
|
||||||
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: 1
|
|
||||||
useSRGBMaterialColor: 1
|
|
||||||
sortHierarchyByName: 1
|
|
||||||
importPhysicalCameras: 1
|
|
||||||
importVisibility: 1
|
|
||||||
importBlendShapes: 1
|
|
||||||
importCameras: 1
|
|
||||||
importLights: 1
|
|
||||||
nodeNameCollisionStrategy: 1
|
|
||||||
fileIdsGeneration: 2
|
|
||||||
swapUVChannels: 0
|
|
||||||
generateSecondaryUV: 1
|
|
||||||
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:
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: fede53ad5812a1046bf12a85cacb875a
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
BIN
RunningLateGame/Assets/Scenes/SampleScene/NavMesh.asset
Normal file
BIN
RunningLateGame/Assets/Scenes/SampleScene/NavMesh.asset
Normal file
Binary file not shown.
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: c5b15e08603268b499e9f7d38414aa1b
|
guid: 8237b59589e7d0f43920c1a2f5ae94f8
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 23800000
|
mainObjectFileID: 23800000
|
|
@ -1,133 +1,92 @@
|
||||||
/*
|
/*
|
||||||
* author: lin hengrui ryan
|
* author: lin hengrui ryan
|
||||||
* date: 30/7/2024
|
* date: 30/7/2024
|
||||||
* description: AI code for the different AI in the game
|
* description: ai code for the different ai in the game
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.AI;
|
using UnityEngine.AI;
|
||||||
|
|
||||||
using Random = System.Random;
|
using Random = System.Random;
|
||||||
|
|
||||||
public class AI : MonoBehaviour
|
public class AI : MonoBehaviour
|
||||||
{
|
{
|
||||||
/// <summary>
|
public enum EntityType
|
||||||
/// to save resources when referring to the speed of this AI if its human
|
{
|
||||||
/// </summary>
|
Human,
|
||||||
private static readonly int AnimatorSpeed = Animator.StringToHash("Speed");
|
Car
|
||||||
|
};
|
||||||
|
|
||||||
|
public EntityType entityType;
|
||||||
/// <summary>
|
|
||||||
/// set the layers the AI can be on
|
|
||||||
/// </summary>
|
|
||||||
public LayerMask walkableLayers;
|
public LayerMask walkableLayers;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// the destination coordinate of the AI
|
|
||||||
/// </summary>
|
|
||||||
public Vector3 destinationCoord;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// the range that the AI can set as their destination
|
|
||||||
/// </summary>
|
|
||||||
public int movingRange;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// the nav mash agent that is on this AI
|
|
||||||
/// </summary>
|
|
||||||
private NavMeshAgent _agent;
|
private NavMeshAgent _agent;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// the animator that is attached to this AI if applicable
|
|
||||||
/// </summary>
|
|
||||||
private Animator _animator;
|
private Animator _animator;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// the current state that the AI is at this point in time
|
|
||||||
/// </summary>
|
|
||||||
private string _currentState;
|
private string _currentState;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// a bool to check if the destination point is set
|
|
||||||
/// </summary>
|
|
||||||
private bool _destinationPointSet;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// the state that the AI will be on the next update
|
|
||||||
/// </summary>
|
|
||||||
private string _nextState;
|
private string _nextState;
|
||||||
|
private static readonly int AnimatorSpeed = Animator.StringToHash("Speed");
|
||||||
|
private bool _walkPointSet;
|
||||||
|
public Vector3 walkPoint;
|
||||||
|
public int strollRange;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// to set initial values
|
|
||||||
/// </summary>
|
|
||||||
public void Awake()
|
public void Awake()
|
||||||
{
|
{
|
||||||
_animator = GetComponent<Animator>();
|
|
||||||
_currentState = "Strolling";
|
|
||||||
|
|
||||||
|
|
||||||
_agent = GetComponent<NavMeshAgent>();
|
_agent = GetComponent<NavMeshAgent>();
|
||||||
_animator = GetComponent<Animator>();
|
if (entityType == EntityType.Human)
|
||||||
_currentState = "Strolling";
|
{
|
||||||
|
_animator = GetComponent<Animator>();
|
||||||
|
_currentState = "Strolling";
|
||||||
_nextState = _currentState;
|
StartCoroutine(Strolling());
|
||||||
ChangeState();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// to update the speed of the AI to the animator each frame and to update any state changes to the AI
|
|
||||||
/// </summary>
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
_animator.SetFloat(AnimatorSpeed, _agent.velocity.magnitude);
|
if (entityType == EntityType.Human)
|
||||||
_currentState = _nextState;
|
{
|
||||||
|
_animator.SetFloat(AnimatorSpeed, _agent.velocity.magnitude);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// to change the scene when needed
|
|
||||||
/// </summary>
|
|
||||||
private void ChangeState()
|
|
||||||
{
|
|
||||||
StartCoroutine(_currentState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// to set a random x and y coordinate for the AI to go to
|
|
||||||
/// </summary>
|
|
||||||
private void SearchWalkPoint()
|
private void SearchWalkPoint()
|
||||||
{
|
{
|
||||||
var rand = new Random();
|
var rand = new Random();
|
||||||
float randomX = rand.Next(-movingRange * 100, movingRange * 100);
|
float randomX = rand.Next(-strollRange * 100, strollRange * 100);
|
||||||
float randomZ = rand.Next(-movingRange * 100, movingRange * 100);
|
float randomZ = rand.Next(-strollRange * 100, strollRange * 100);
|
||||||
destinationCoord = new Vector3(
|
walkPoint = new Vector3(
|
||||||
transform.position.x + randomX / 100,
|
transform.position.x + (randomX / 100),
|
||||||
transform.position.y,
|
transform.position.y,
|
||||||
transform.position.z + randomZ / 100
|
transform.position.z + (randomZ / 100)
|
||||||
);
|
);
|
||||||
if (Physics.Raycast(destinationCoord, -transform.up, 2f, walkableLayers)) _destinationPointSet = true;
|
if (Physics.Raycast(walkPoint, -transform.up, 2f, walkableLayers))
|
||||||
|
{
|
||||||
|
_walkPointSet = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
IEnumerator Strolling()
|
||||||
/// a state that the AI wonders around using the SearchWalkPoint function to find a location for the AI to go to
|
|
||||||
/// </summary>
|
|
||||||
private IEnumerator Strolling()
|
|
||||||
{
|
{
|
||||||
SearchWalkPoint();
|
SearchWalkPoint();
|
||||||
|
|
||||||
while (_currentState == "Strolling")
|
while (_currentState == "Strolling")
|
||||||
{
|
{
|
||||||
if (!_destinationPointSet)
|
Debug.Log("strolling");
|
||||||
|
if (!_walkPointSet)
|
||||||
|
{
|
||||||
SearchWalkPoint();
|
SearchWalkPoint();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
_agent.SetDestination(destinationCoord);
|
{
|
||||||
|
_agent.SetDestination((walkPoint));
|
||||||
|
}
|
||||||
|
|
||||||
if ((transform.position - destinationCoord).magnitude < 1f) _destinationPointSet = false;
|
if ((transform.position - walkPoint).magnitude < 1f)
|
||||||
|
{
|
||||||
|
_walkPointSet = false;
|
||||||
|
}
|
||||||
|
|
||||||
yield return new WaitForSeconds(1f);
|
yield return new WaitForSeconds(1F);
|
||||||
}
|
}
|
||||||
|
|
||||||
ChangeState();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,66 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class CarController : MonoBehaviour
|
|
||||||
{
|
|
||||||
public enum Axel
|
|
||||||
{
|
|
||||||
Front,
|
|
||||||
Rear
|
|
||||||
}
|
|
||||||
|
|
||||||
public float acceleration;
|
|
||||||
public float turnAngle;
|
|
||||||
public List<Wheel> wheels;
|
|
||||||
|
|
||||||
public float brakeForce;
|
|
||||||
public bool braking;
|
|
||||||
private float _currentAcceleration;
|
|
||||||
private float _currentTurn;
|
|
||||||
|
|
||||||
|
|
||||||
private void FixedUpdate()
|
|
||||||
{
|
|
||||||
Move();
|
|
||||||
Steering();
|
|
||||||
Brake();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetInputs(float forwardAmount, float turnAmount)
|
|
||||||
{
|
|
||||||
_currentAcceleration = forwardAmount * acceleration;
|
|
||||||
_currentTurn = turnAmount * turnAngle;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void Move()
|
|
||||||
{
|
|
||||||
foreach (var wheel in wheels) wheel.wheelCollider.motorTorque = _currentAcceleration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Brake()
|
|
||||||
{
|
|
||||||
if (braking)
|
|
||||||
foreach (var wheel in wheels)
|
|
||||||
wheel.wheelCollider.brakeTorque = brakeForce;
|
|
||||||
else
|
|
||||||
foreach (var wheel in wheels)
|
|
||||||
wheel.wheelCollider.brakeTorque = 0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Steering()
|
|
||||||
{
|
|
||||||
foreach (var wheel in wheels)
|
|
||||||
if (wheel.axel == Axel.Front)
|
|
||||||
wheel.wheelCollider.steerAngle = _currentTurn;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public struct Wheel
|
|
||||||
{
|
|
||||||
public GameObject wheelModel;
|
|
||||||
public WheelCollider wheelCollider;
|
|
||||||
public Axel axel;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 6da9430305b32f446a2517f4a73fdf57
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,114 +0,0 @@
|
||||||
using System.Collections;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class AICar : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private Transform carPosition;
|
|
||||||
[SerializeField] private float stoppingDistance;
|
|
||||||
[SerializeField] private float slowingSpeed;
|
|
||||||
[SerializeField] private float slowingDistance;
|
|
||||||
[SerializeField] private float reverseDist;
|
|
||||||
private CarController _car;
|
|
||||||
private string _currentState;
|
|
||||||
private Transform _driveTarget;
|
|
||||||
private string _nextState;
|
|
||||||
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
var hasChild = false;
|
|
||||||
var i = 0;
|
|
||||||
GameObject test;
|
|
||||||
while (!hasChild)
|
|
||||||
{
|
|
||||||
test = gameObject.transform.GetChild(i).gameObject;
|
|
||||||
if (test.name == "Target")
|
|
||||||
{
|
|
||||||
_driveTarget = test.transform;
|
|
||||||
hasChild = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_car = GetComponent<CarController>();
|
|
||||||
_currentState = "Driving";
|
|
||||||
_nextState = _currentState;
|
|
||||||
ChangeState();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
_currentState = _nextState;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ChangeState()
|
|
||||||
{
|
|
||||||
StartCoroutine(_currentState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator Driving()
|
|
||||||
{
|
|
||||||
_car = GetComponent<CarController>();
|
|
||||||
|
|
||||||
while (_currentState == "Driving")
|
|
||||||
{
|
|
||||||
var accelerationAmount = 0f;
|
|
||||||
var turnAmount = 0f;
|
|
||||||
var targetPosition = _driveTarget.position;
|
|
||||||
var dirToMove = (targetPosition - carPosition.transform.position).normalized;
|
|
||||||
var forwardsAmount = Vector3.Dot(carPosition.transform.forward, dirToMove);
|
|
||||||
var directionToDrive = Vector3.SignedAngle(carPosition.transform.forward, dirToMove, Vector3.up);
|
|
||||||
var distanceToTarget = Vector3.Distance(carPosition.position, targetPosition);
|
|
||||||
if (distanceToTarget >= stoppingDistance)
|
|
||||||
{
|
|
||||||
_car.braking = false;
|
|
||||||
//in front of target position
|
|
||||||
if (forwardsAmount > 0)
|
|
||||||
{
|
|
||||||
//closer than the slowing distance
|
|
||||||
if (distanceToTarget <= slowingDistance)
|
|
||||||
{
|
|
||||||
//the car is very fast
|
|
||||||
if (carPosition.GetComponent<Rigidbody>().velocity.magnitude > slowingSpeed)
|
|
||||||
accelerationAmount = -2;
|
|
||||||
else
|
|
||||||
accelerationAmount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
accelerationAmount = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (distanceToTarget < reverseDist)
|
|
||||||
accelerationAmount = -1;
|
|
||||||
else
|
|
||||||
accelerationAmount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (directionToDrive < 0)
|
|
||||||
turnAmount = 1;
|
|
||||||
else if (directionToDrive > 0)
|
|
||||||
turnAmount = -1;
|
|
||||||
else
|
|
||||||
turnAmount = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_car.braking = true;
|
|
||||||
accelerationAmount = 0f;
|
|
||||||
turnAmount = 0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
Debug.Log(carPosition.GetComponent<Rigidbody>().velocity.magnitude);
|
|
||||||
_car.SetInputs(accelerationAmount, turnAmount);
|
|
||||||
yield return new WaitForEndOfFrame();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: bc82a40176164f02897928bd573bc2ca
|
|
||||||
timeCreated: 1722499203
|
|
|
@ -32,7 +32,7 @@ Material:
|
||||||
m_LightmapFlags: 4
|
m_LightmapFlags: 4
|
||||||
m_EnableInstancingVariants: 0
|
m_EnableInstancingVariants: 0
|
||||||
m_DoubleSidedGI: 0
|
m_DoubleSidedGI: 0
|
||||||
m_CustomRenderQueue: 2000
|
m_CustomRenderQueue: -1
|
||||||
stringTagMap:
|
stringTagMap:
|
||||||
RenderType: Opaque
|
RenderType: Opaque
|
||||||
disabledShaderPasses:
|
disabledShaderPasses:
|
||||||
|
@ -137,3 +137,4 @@ Material:
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
- _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
|
- _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
|
|
|
@ -17,25 +17,15 @@ MonoBehaviour:
|
||||||
m_MaterialReferences: []
|
m_MaterialReferences: []
|
||||||
--- !u!21 &2100000
|
--- !u!21 &2100000
|
||||||
Material:
|
Material:
|
||||||
serializedVersion: 8
|
serializedVersion: 6
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Heather
|
m_Name: Heather
|
||||||
m_Shader: {fileID: -6465566751694194690, guid: dfa3b96612ed4df4a97b7fd06217ba23,
|
m_Shader: {fileID: -6465566751694194690, guid: dfa3b96612ed4df4a97b7fd06217ba23, type: 3}
|
||||||
type: 3}
|
m_ShaderKeywords: _ALPHATEST_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _DISABLE_DECALS
|
||||||
m_Parent: {fileID: 0}
|
_DISABLE_SSR _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords:
|
|
||||||
- _ALPHATEST_ON
|
|
||||||
- _BUILTIN_ALPHATEST_ON
|
|
||||||
- _BUILTIN_AlphaClip
|
|
||||||
- _DISABLE_DECALS
|
|
||||||
- _DISABLE_SSR
|
|
||||||
- _DISABLE_SSR_TRANSPARENT
|
|
||||||
- _DOUBLESIDED_ON
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 2
|
m_LightmapFlags: 2
|
||||||
m_EnableInstancingVariants: 1
|
m_EnableInstancingVariants: 1
|
||||||
m_DoubleSidedGI: 1
|
m_DoubleSidedGI: 1
|
||||||
|
@ -50,7 +40,6 @@ Material:
|
||||||
- RayTracingPrepass
|
- RayTracingPrepass
|
||||||
- ForwardEmissiveForDeferred
|
- ForwardEmissiveForDeferred
|
||||||
- MOTIONVECTORS
|
- MOTIONVECTORS
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
|
@ -67,13 +56,11 @@ Material:
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
- TerrainTexture:
|
- TerrainTexture:
|
||||||
m_Texture: {fileID: 707188533860266558, guid: dfce0fe87ba57ef449f748baa61f1cc2,
|
m_Texture: {fileID: 707188533860266558, guid: dfce0fe87ba57ef449f748baa61f1cc2, type: 2}
|
||||||
type: 2}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
- Terrain_Splatmap:
|
- Terrain_Splatmap:
|
||||||
m_Texture: {fileID: 707188533860266558, guid: dfce0fe87ba57ef449f748baa61f1cc2,
|
m_Texture: {fileID: 707188533860266558, guid: dfce0fe87ba57ef449f748baa61f1cc2, type: 2}
|
||||||
type: 2}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
- Terrain_Splatmap_0:
|
- Terrain_Splatmap_0:
|
||||||
|
@ -81,8 +68,7 @@ Material:
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
- Terrain_Splatmap_1:
|
- Terrain_Splatmap_1:
|
||||||
m_Texture: {fileID: 6456901915053530685, guid: dfce0fe87ba57ef449f748baa61f1cc2,
|
m_Texture: {fileID: 6456901915053530685, guid: dfce0fe87ba57ef449f748baa61f1cc2, type: 2}
|
||||||
type: 2}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
- Texture2D_8713F080:
|
- Texture2D_8713F080:
|
||||||
|
@ -173,7 +159,7 @@ Material:
|
||||||
- _AlphaCutoffEnable: 1
|
- _AlphaCutoffEnable: 1
|
||||||
- _AlphaDstBlend: 0
|
- _AlphaDstBlend: 0
|
||||||
- _AlphaSrcBlend: 1
|
- _AlphaSrcBlend: 1
|
||||||
- _AlphaToMask: 1
|
- _AlphaToMask: 0
|
||||||
- _AlphaToMaskInspectorValue: 0
|
- _AlphaToMaskInspectorValue: 0
|
||||||
- _BUILTIN_AlphaClip: 1
|
- _BUILTIN_AlphaClip: 1
|
||||||
- _BUILTIN_Blend: 0
|
- _BUILTIN_Blend: 0
|
||||||
|
@ -188,7 +174,6 @@ Material:
|
||||||
- _BUILTIN_ZWriteControl: 0
|
- _BUILTIN_ZWriteControl: 0
|
||||||
- _Blend: 0
|
- _Blend: 0
|
||||||
- _BlendMode: 0
|
- _BlendMode: 0
|
||||||
- _BlendModePreserveSpecular: 0
|
|
||||||
- _CastShadows: 1
|
- _CastShadows: 1
|
||||||
- _ConservativeDepthOffsetEnable: 0
|
- _ConservativeDepthOffsetEnable: 0
|
||||||
- _Cull: 0
|
- _Cull: 0
|
||||||
|
@ -203,7 +188,6 @@ Material:
|
||||||
- _DstBlend: 0
|
- _DstBlend: 0
|
||||||
- _EnableBlendModePreserveSpecularLighting: 1
|
- _EnableBlendModePreserveSpecularLighting: 1
|
||||||
- _EnableFogOnTransparent: 1
|
- _EnableFogOnTransparent: 1
|
||||||
- _ExcludeFromTUAndAA: 0
|
|
||||||
- _FadeBias: 1
|
- _FadeBias: 1
|
||||||
- _ForceForwardEmissive: 0
|
- _ForceForwardEmissive: 0
|
||||||
- _OpaqueCullMode: 2
|
- _OpaqueCullMode: 2
|
||||||
|
@ -248,8 +232,7 @@ Material:
|
||||||
- use_terrain_texture: 0
|
- use_terrain_texture: 0
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- Color_1: {r: 1, g: 1, b: 1, a: 0}
|
- Color_1: {r: 1, g: 1, b: 1, a: 0}
|
||||||
- Color_5108e9ce42374b88877d5b6d32008f57: {r: 0.4245283, g: 0.3904859, b: 0.3224012,
|
- Color_5108e9ce42374b88877d5b6d32008f57: {r: 0.4245283, g: 0.3904859, b: 0.3224012, a: 1}
|
||||||
a: 1}
|
|
||||||
- Color_98d740f37ee94393862968e06dd248d6: {r: 1, g: 1, b: 1, a: 0}
|
- Color_98d740f37ee94393862968e06dd248d6: {r: 1, g: 1, b: 1, a: 0}
|
||||||
- Fade_Color: {r: 0, g: 0, b: 0, a: 0}
|
- Fade_Color: {r: 0, g: 0, b: 0, a: 0}
|
||||||
- SplatA: {r: 0, g: 0, b: 0, a: 1}
|
- SplatA: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
@ -262,10 +245,8 @@ Material:
|
||||||
- Terrain_Scale: {r: 100, g: 100, b: 0, a: 0}
|
- Terrain_Scale: {r: 100, g: 100, b: 0, a: 0}
|
||||||
- Vector2_1a286d49dc7b437fb4f1ea99b04e2664: {r: 0.05, g: 0.5, b: 0, a: 0}
|
- Vector2_1a286d49dc7b437fb4f1ea99b04e2664: {r: 0.05, g: 0.5, b: 0, a: 0}
|
||||||
- Vector2_98F9C2DA: {r: 0.2, g: 0.2, b: 0, a: 0}
|
- Vector2_98F9C2DA: {r: 0.2, g: 0.2, b: 0, a: 0}
|
||||||
- _DiffusionProfileAsset: {r: -0.00000002060262, g: 7.3194675e-27, b: 69972056,
|
- _DiffusionProfileAsset: {r: -0.00000002060262, g: 7.3194675e-27, b: 69972056, a: -3.7115523e+9}
|
||||||
a: -3.7115523e+9}
|
- _Diffusion_Profile_Asset: {r: -0.00000002060262, g: 7.3194675e-27, b: 69972056, a: -3.7115523e+9}
|
||||||
- _Diffusion_Profile_Asset: {r: -0.00000002060262, g: 7.3194675e-27, b: 69972056,
|
|
||||||
a: -3.7115523e+9}
|
|
||||||
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
|
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
|
||||||
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
|
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
- _SSSColor: {r: 0.95744157, g: 1, b: 0.5424528, a: 0}
|
- _SSSColor: {r: 0.95744157, g: 1, b: 0.5424528, a: 0}
|
||||||
|
|
|
@ -12,14 +12,13 @@ MonoBehaviour:
|
||||||
m_Script: {fileID: 11500000, guid: b2686e09ec7aef44bad2843e4416f057, type: 3}
|
m_Script: {fileID: 11500000, guid: b2686e09ec7aef44bad2843e4416f057, type: 3}
|
||||||
m_Name: FoliageDiffusionProfile
|
m_Name: FoliageDiffusionProfile
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
m_Version: 1
|
||||||
profile:
|
profile:
|
||||||
scatteringDistance: {r: 0.7490196, g: 0.69468653, b: 0.24061768, a: 1}
|
scatteringDistance: {r: 0.7568628, g: 0.7019608, b: 0.24313727, a: 1}
|
||||||
scatteringDistanceMultiplier: 1.0104713
|
|
||||||
transmissionTint: {r: 1, g: 1, b: 1, a: 1}
|
transmissionTint: {r: 1, g: 1, b: 1, a: 1}
|
||||||
texturingMode: 0
|
texturingMode: 0
|
||||||
transmissionMode: 1
|
transmissionMode: 1
|
||||||
thicknessRemap: {x: 0, y: 0.2873168}
|
thicknessRemap: {x: 0, y: 0.2873168}
|
||||||
worldScale: 1
|
worldScale: 1
|
||||||
ior: 1.4
|
ior: 1.4
|
||||||
hash: 1074823563
|
hash: 1081692787
|
||||||
m_Version: 2
|
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
--- !u!78 &1
|
--- !u!78 &1
|
||||||
TagManager:
|
TagManager:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
tags:
|
tags: []
|
||||||
- CinemachineTarget
|
|
||||||
layers:
|
layers:
|
||||||
- Default
|
- Default
|
||||||
- TransparentFX
|
- TransparentFX
|
||||||
|
@ -12,7 +11,7 @@ TagManager:
|
||||||
-
|
-
|
||||||
- Water
|
- Water
|
||||||
- UI
|
- UI
|
||||||
- Player
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
Reference in a new issue