place streets

This commit is contained in:
Janis
2022-12-04 15:09:42 +01:00
parent c94f387a5b
commit 274f5f7cac
18 changed files with 745 additions and 438 deletions

View File

@@ -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)

View File

@@ -0,0 +1,6 @@
using UnityEngine;
public class StreetContainer : MonoBehaviour
{
public GameObject streetObject;
}

View File

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

View File

@@ -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);
}
}