mirror of
https://github.com/DerTyp7/traffic-unity.git
synced 2025-10-30 13:17:08 +01:00
place streets
This commit is contained in:
@@ -5,7 +5,7 @@ public class Street : MonoBehaviour
|
||||
{
|
||||
private List<TrafficNode> nodes = new List<TrafficNode>();
|
||||
|
||||
private void Awake()
|
||||
private void Start()
|
||||
{
|
||||
nodes.Add(Instantiate(PrefabDictionary.instance.nodePrefab, transform).GetComponent<TrafficNode>());
|
||||
nodes.Add(Instantiate(PrefabDictionary.instance.nodePrefab, transform).GetComponent<TrafficNode>());
|
||||
@@ -14,10 +14,10 @@ public class Street : MonoBehaviour
|
||||
|
||||
nodes[0].AddNextNode(nodes[1]);
|
||||
|
||||
CreateNode(new Vector3(0, 0, 0));
|
||||
/*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));
|
||||
CreateNode(new Vector3(-0.12f, 0, 0));*/
|
||||
}
|
||||
|
||||
private TrafficNode[] getNearestNodes(float positionX)
|
||||
|
||||
6
Assets/Scripts/TrafficSystem/StreetContainer.cs
Normal file
6
Assets/Scripts/TrafficSystem/StreetContainer.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class StreetContainer : MonoBehaviour
|
||||
{
|
||||
public GameObject streetObject;
|
||||
}
|
||||
11
Assets/Scripts/TrafficSystem/StreetContainer.cs.meta
Normal file
11
Assets/Scripts/TrafficSystem/StreetContainer.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 51e2ae474deec9241b41be37ee06f5cf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -6,47 +6,84 @@ public class TrafficParticipant : MonoBehaviour
|
||||
private TrafficNode nextNode;
|
||||
|
||||
[SerializeField]
|
||||
private TrafficNode currentTrafficNode;
|
||||
private TrafficNode currentNode;
|
||||
|
||||
private bool onNodeNetwork = false;
|
||||
|
||||
|
||||
private float speed = 1f;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (nextNode == null)
|
||||
{
|
||||
ChooseNextNode();
|
||||
}
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
speed = currentTrafficNode.GetSpeed();
|
||||
if (nextNode != null)
|
||||
if (currentNode)
|
||||
{
|
||||
transform.position = Vector3.MoveTowards(transform.position, nextNode.transform.position, speed * Time.deltaTime); if (transform.position == nextNode.transform.position)
|
||||
speed = currentNode.GetSpeed();
|
||||
|
||||
if (onNodeNetwork)
|
||||
{
|
||||
Arrived();
|
||||
ChooseNextNode();
|
||||
if (nextNode != null)
|
||||
{
|
||||
transform.position = Vector3.MoveTowards(transform.position, nextNode.transform.position, speed * Time.deltaTime);
|
||||
if (transform.position == nextNode.transform.position)
|
||||
{
|
||||
Arrived();
|
||||
ChooseNextNode();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChooseNextNode();
|
||||
}
|
||||
}
|
||||
else // Align to node network
|
||||
{
|
||||
transform.position = Vector3.MoveTowards(transform.position, currentNode.transform.position, speed * Time.deltaTime);
|
||||
if (transform.position == currentNode.transform.position)
|
||||
{
|
||||
onNodeNetwork = true;
|
||||
ChooseNextNode();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ChooseNextNode();
|
||||
currentNode = GetNearestNode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private TrafficNode GetNearestNode()
|
||||
{
|
||||
GameObject[] allTrafficNodes = GameObject.FindGameObjectsWithTag("TrafficNode");
|
||||
|
||||
if (allTrafficNodes.Length > 0)
|
||||
{
|
||||
GameObject nearestNodeObject = allTrafficNodes[0];
|
||||
|
||||
foreach (GameObject nodeObject in GameObject.FindGameObjectsWithTag("TrafficNode"))
|
||||
{
|
||||
if ((transform.position - nodeObject.transform.position).sqrMagnitude < (transform.position - nearestNodeObject.transform.position).sqrMagnitude)
|
||||
{
|
||||
nearestNodeObject = nodeObject;
|
||||
}
|
||||
}
|
||||
return nearestNodeObject.GetComponent<TrafficNode>();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void Arrived()
|
||||
{
|
||||
Debug.Log("Arrived");
|
||||
currentTrafficNode = nextNode;
|
||||
currentNode = nextNode;
|
||||
nextNode = null;
|
||||
}
|
||||
|
||||
private void ChooseNextNode()
|
||||
{
|
||||
//Debug.Log("Choose next node");
|
||||
if (nextNode == null)
|
||||
{
|
||||
nextNode = currentTrafficNode.GetNextTrafficNodes()[Random.Range(0, (currentTrafficNode.GetNextTrafficNodes().Count))];
|
||||
nextNode = currentNode.GetNextTrafficNodes()[Random.Range(0, (currentNode.GetNextTrafficNodes().Count))];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +92,6 @@ public class TrafficParticipant : MonoBehaviour
|
||||
if (nextNode != null)
|
||||
{
|
||||
Gizmos.color = Color.red;
|
||||
|
||||
Gizmos.DrawLine(transform.position, nextNode.transform.position);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user