示例#1
0
    // choisit l'une des scènes disponibles à portée et s'inscrit dedans
    public void SelectAndEnterScene()
    {
        float[] rdmTab = new float[availableScenes.Count];

        for (int i = 0; i < availableScenes.Count; i++) // evaluation des distances entre le passant et la scene
        {
            float distance = (this.transform.position - availableScenes[i].transform.position).magnitude;
            rdmTab[i] = distance + Random.Range(0, 3); // bruitage
        }
        int   selectedIndex = 0;
        float min           = 10000;

        for (int i = 0; i < rdmTab.Length; i++) // selection de la scene la plus proche
        {
            if (rdmTab[i] < min)
            {
                min           = rdmTab[i];
                selectedIndex = i;
            }
        }
        selectedScene = availableScenes[selectedIndex];
        sceneLeader   = selectedScene.mainActor;                      // recuperation du leader de la scene en question

        for (int i = 0; i < selectedScene.availablesSpots.Count; i++) // parcours des places dans la scene
        {
            if (selectedScene.availablesSpots[i])                     // si il ya une place de libre
            {
                sceneSpot = selectedScene.spots[i];
                SetTarget(sceneSpot);                     // le passant se dirige sur cette place
                selectedScene.availablesSpots[i] = false; // et la place est prise
                selectedSpotIndex = i;
                break;
            }
        }
    }
示例#2
0
 // quitte la scèe
 public void LeaveSelectedScene()
 {
     selectedScene.availablesSpots[selectedSpotIndex] = true;
     sceneSpot     = null;
     sceneLeader   = null;
     selectedScene = null;
     SetTarget(null);
     selectedSpotIndex = -1;
 }
示例#3
0
    // choisit l'une des scènes disponibles à portée et s'inscrit dedans
    public void SelectAndEnterScene()
    {
        float[] rdmTab = new float[availableScenes.Count];

        for (int i = 0; i < availableScenes.Count; i++) // evaluation des distances entre le passant et la scene
        {
            float distance = (this.transform.position - availableScenes[i].transform.position).magnitude;
            rdmTab[i] = distance + Random.Range(0, 3); // bruitage
        }
        int selectedIndex = 0;
        float min = 10000;
        for (int i = 0; i < rdmTab.Length; i++) // selection de la scene la plus proche
        {
            if (rdmTab[i] < min)
            {
                min = rdmTab[i];
                selectedIndex = i;
            }
        }
        selectedScene = availableScenes[selectedIndex];
        sceneLeader = selectedScene.mainActor; // recuperation du leader de la scene en question

        for (int i = 0; i < selectedScene.availablesSpots.Count; i++) // parcours des places dans la scene
        {
            if (selectedScene.availablesSpots[i])// si il ya une place de libre
            {
                sceneSpot = selectedScene.spots[i];
                SetTarget(sceneSpot); // le passant se dirige sur cette place
                selectedScene.availablesSpots[i] = false; // et la place est prise
                selectedSpotIndex = i;
                break;
            }
        }
    }
示例#4
0
 // quitte la scèe
 public void LeaveSelectedScene()
 {
     selectedScene.availablesSpots[selectedSpotIndex] = true;
     sceneSpot = null;
     sceneLeader = null;
     selectedScene = null;
     SetTarget(null);
     selectedSpotIndex = -1;
 }