nodes in street

This commit is contained in:
Janis
2022-12-02 17:30:00 +01:00
parent f6cc7080e4
commit f0cbf7239e
10 changed files with 384 additions and 58 deletions

View File

@@ -10,9 +10,10 @@ GameObject:
m_Component:
- component: {fileID: 487205225613997096}
- component: {fileID: 487205225613997103}
- component: {fileID: 3883359684032139225}
m_Layer: 0
m_Name: Node
m_TagString: Untagged
m_TagString: TrafficNode
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@@ -25,7 +26,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 487205225613997102}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -2.57, y: -3.07, z: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -46,3 +47,20 @@ MonoBehaviour:
m_EditorClassIdentifier:
nextTrafficNodes:
- {fileID: 0}
speed: 5
--- !u!58 &3883359684032139225
CircleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 487205225613997102}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
serializedVersion: 2
m_Radius: 0.1

View File

@@ -123,28 +123,15 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &333016202
--- !u!1 &333016202 stripped
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_CorrespondingSourceObject: {fileID: 487205225613997102, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
m_PrefabInstance: {fileID: 487205225903872164}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 333016204}
- component: {fileID: 333016203}
m_Layer: 0
m_Name: Node
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &333016203
--- !u!114 &333016203 stripped
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_CorrespondingSourceObject: {fileID: 487205225613997103, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
m_PrefabInstance: {fileID: 487205225903872164}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 333016202}
m_Enabled: 1
@@ -152,23 +139,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 23522bc3f6b64e9478f91a82fa664918, type: 3}
m_Name:
m_EditorClassIdentifier:
nextTrafficNodes:
- {fileID: 0}
--- !u!4 &333016204
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 333016202}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -2.57, y: -3.07, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
@@ -205,7 +175,7 @@ Camera:
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_BackGroundColor: {r: 0.08410465, g: 0.088084914, b: 0.09433961, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
@@ -226,7 +196,7 @@ Camera:
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Bits: 2147483647
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
@@ -253,6 +223,37 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &927753397
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 927753398}
m_Layer: 0
m_Name: pivot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &927753398
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 927753397}
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: []
m_Father: {fileID: 1549916943}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1432161433
GameObject:
m_ObjectHideFlags: 0
@@ -285,7 +286,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
nextNode: {fileID: 0}
currentTrafficNode: {fileID: 333016203}
speed: 3
--- !u!212 &1432161435
SpriteRenderer:
m_ObjectHideFlags: 0
@@ -353,6 +353,105 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1549916940
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1549916943}
- component: {fileID: 1549916942}
- component: {fileID: 1549916941}
m_Layer: 0
m_Name: Street
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1549916941
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1549916940}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b794f37801ab66d4496dd16ee2294dee, type: 3}
m_Name:
m_EditorClassIdentifier:
pivotPoint: {fileID: 927753397}
--- !u!212 &1549916942
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1549916940}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, 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: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Color: {r: 0.33597365, g: 0.35987362, b: 0.4716981, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &1549916943
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1549916940}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.4058, y: -0.20593682, z: 0}
m_LocalScale: {x: 18.39, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 927753398}
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1992284311
GameObject:
m_ObjectHideFlags: 0
@@ -363,9 +462,10 @@ GameObject:
m_Component:
- component: {fileID: 1992284313}
- component: {fileID: 1992284312}
- component: {fileID: 1992284314}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_TagString: GameManager
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@@ -382,8 +482,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4da8003edf1936e4b9a1af5a937c1074, type: 3}
m_Name:
m_EditorClassIdentifier:
nodeObject: {fileID: 333016202}
prevPlacedNode: {fileID: 333016203}
nodeObject: {fileID: 487205225613997102, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
selectedPlacedNode: {fileID: 0}
--- !u!4 &1992284313
Transform:
m_ObjectHideFlags: 0
@@ -399,3 +499,77 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1992284314
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1992284311}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9bf91a6c0d2139a4dba9954918414857, type: 3}
m_Name:
m_EditorClassIdentifier:
nodePrefab: {fileID: 333016202}
--- !u!1001 &487205225903872164
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalPosition.x
value: -2.57
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalPosition.y
value: -3.07
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997096, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 487205225613997102, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: m_Name
value: Node
objectReference: {fileID: 0}
- target: {fileID: 487205225613997103, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}
propertyPath: nextTrafficNodes.Array.data[0]
value:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: def66282a1c498e4c906a02f6bbd214e, type: 3}

View File

@@ -6,23 +6,38 @@ public class NodePlacer : MonoBehaviour
private GameObject nodeObject;
[SerializeField]
private TrafficNode prevPlacedNode;
private TrafficNode selectedPlacedNode;
void Update()
{
if (Input.GetKeyDown(KeyCode.N))
{
Debug.Log("H2213123IT");
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if (hit.collider != null)
{
Debug.Log("HIT");
selectedPlacedNode = hit.collider.transform.gameObject.GetComponent<TrafficNode>();
}
else
{
selectedPlacedNode = null;
}
}
if (Input.GetKeyDown(KeyCode.B))
{
Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
newPosition.z = 0;
TrafficNode newNode = Instantiate(nodeObject, newPosition, Quaternion.identity).GetComponent<TrafficNode>();
if (prevPlacedNode != null)
if (selectedPlacedNode != null)
{
prevPlacedNode.AddNextNode(newNode);
selectedPlacedNode.AddNextNode(newNode);
}
prevPlacedNode = newNode;
}
}

View File

@@ -0,0 +1,13 @@
using UnityEngine;
public class PrefabDictionary : MonoBehaviour
{
public static PrefabDictionary instance;
public GameObject nodePrefab;
void Awake()
{
if (instance == null)
instance = this;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9bf91a6c0d2139a4dba9954918414857
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,76 @@
using System.Collections.Generic;
using UnityEngine;
public class Street : MonoBehaviour
{
private List<TrafficNode> nodes = new List<TrafficNode>();
private void Awake()
{
nodes.Add(Instantiate(PrefabDictionary.instance.nodePrefab, transform).GetComponent<TrafficNode>());
nodes.Add(Instantiate(PrefabDictionary.instance.nodePrefab, transform).GetComponent<TrafficNode>());
nodes[0].transform.localPosition = new Vector3(-0.5f, 0, 0);
nodes[1].transform.localPosition = new Vector3(0.5f, 0, 0);
nodes[0].AddNextNode(nodes[1]);
CreateNode(new Vector3(0, 0, 0));
CreateNode(new Vector3(-0.25f, 0, 0));
RemoveNode(CreateNode(new Vector3(0.33f, 0, 0)));
CreateNode(new Vector3(-0.12f, 0, 0));
}
private TrafficNode[] getNearestNodes(float positionX)
{
TrafficNode[] nearestNodes = new TrafficNode[2];
nearestNodes[0] = nodes[0];
nearestNodes[1] = nodes[1];
foreach (TrafficNode node in nodes)
{
float distance = Mathf.Abs(node.transform.localPosition.x - positionX);
if (distance < Mathf.Abs(nearestNodes[0].transform.localPosition.x - positionX) && node.transform.localPosition.x < positionX)
{
nearestNodes[0] = node;
}
if (distance < Mathf.Abs(nearestNodes[1].transform.localPosition.x - positionX) && node.transform.localPosition.x > positionX)
{
nearestNodes[1] = node;
}
}
return nearestNodes;
}
public TrafficNode CreateNode(Vector3 localPosition)
{
TrafficNode[] nearestNodes = getNearestNodes(localPosition.x);
TrafficNode newNode = Instantiate(PrefabDictionary.instance.nodePrefab, transform).GetComponent<TrafficNode>();
newNode.transform.localPosition = localPosition;
nearestNodes[0].RemoveNextNode(nearestNodes[1]);
nearestNodes[0].AddNextNode(newNode);
newNode.AddNextNode(nearestNodes[1]);
nodes.Insert(nodes.IndexOf(nearestNodes[1]), newNode);
return newNode;
}
public void RemoveNode(TrafficNode node)
{
TrafficNode[] nearestNodes = getNearestNodes(node.transform.localPosition.x);
nearestNodes[0].RemoveNextNode(node);
foreach (TrafficNode n in node.GetNextTrafficNodes())
{
if (nodes.Contains(n))
{
nearestNodes[0].AddNextNode(n);
}
}
nodes.Remove(node);
Destroy(node.gameObject);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b794f37801ab66d4496dd16ee2294dee
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -4,14 +4,24 @@ using UnityEngine;
public class TrafficNode : MonoBehaviour
{
[SerializeField]
private List<TrafficNode> nextTrafficNodes;
private List<TrafficNode> nextTrafficNodes = new List<TrafficNode>();
[SerializeField]
private float speed = 5.0f;
public float GetSpeed() { return speed; }
public List<TrafficNode> GetNextTrafficNodes() { return nextTrafficNodes; }
public void AddNextNode(TrafficNode node)
public void AddNextNode(TrafficNode newNode)
{
nextTrafficNodes.Add(node);
nextTrafficNodes.Add(newNode);
}
public void RemoveNextNode(TrafficNode node)
{
nextTrafficNodes.Remove(node);
}
private void OnDrawGizmos()
{
Gizmos.color = Color.green;

View File

@@ -8,8 +8,7 @@ public class TrafficParticipant : MonoBehaviour
[SerializeField]
private TrafficNode currentTrafficNode;
[SerializeField]
private float speed = 5f;
private float speed = 1f;
private void Start()
{
@@ -20,6 +19,7 @@ public class TrafficParticipant : MonoBehaviour
}
private void Update()
{
speed = currentTrafficNode.GetSpeed();
if (nextNode != null)
{
transform.position = Vector3.MoveTowards(transform.position, nextNode.transform.position, speed * Time.deltaTime); if (transform.position == nextNode.transform.position)
@@ -32,9 +32,6 @@ public class TrafficParticipant : MonoBehaviour
{
ChooseNextNode();
}
}
private void Arrived()
@@ -46,7 +43,7 @@ public class TrafficParticipant : MonoBehaviour
private void ChooseNextNode()
{
Debug.Log("Choose next node");
//Debug.Log("Choose next node");
if (nextNode == null)
{
nextNode = currentTrafficNode.GetNextTrafficNodes()[Random.Range(0, (currentTrafficNode.GetNextTrafficNodes().Count))];

View File

@@ -3,7 +3,8 @@
--- !u!78 &1
TagManager:
serializedVersion: 2
tags: []
tags:
- GameManager
layers:
- Default
- TransparentFX