コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        if (PSO == true)
        {
            partic.UpdateParticleProgram();
        }


        foreach (FlockAgent agent in agents)    // update ke seluruh agent
        {
            List <Transform> context = GetNearByObjects(agent);

            Vector2 move;
            if (PSO == true)
            {
                move = behaviorMono.CalculateMove(agent, context, this, partic.targetBestGlobalPos);
            }
            else
            {
                move = behaviors.CalculateMove(agent, context, this);
            }

            move *= driveFactor;

            if (move.sqrMagnitude > squareMaxSpeed)
            {
                move = move.normalized * maxSpeed;
            }
            agent.Move(move);


            //Debug.Log(Vector2.SqrMagnitude(this.transform.position - agent.transform.position));
            //Debug.Log(this.ToString() + "  " + agent.ToString());

            //AddRecord(this.ToString(), agent.ToString(), Vector2.SqrMagnitude(this.transform.position - agent.transform.position), "floflo.csv");
            //for (int i = 0; i < moveArray.Length; i++)
            //{
            //    if (moveArray[i].sqrMagnitude > squareMaxSpeed)
            //    {
            //        moveArray[i] = moveArray[i].normalized * maxSpeed;
            //    }
            //    agent.Move(moveArray[i]);
            //}
        }
        epoch++;
        //using (System.IO.StreamWriter file = new System.IO.StreamWriter("AlingmentNew2.csv", true))


        //    Debug.Log((int)Time.fixedTime);
    }
コード例 #2
0
    // Update is called once per frame
    void Update()
    {
        if (PSO == true)
        {
            partic.UpdateParticleProgram();
        }

        foreach (FlockAgent agent in agents)// update ke seluruh agent
        {
            List <Transform> context = GetNearByObjects(agent);
            Vector2          move;
            if (PSO == true)
            {
                move = behaviorMono.CalculateMove(agent, context, this, partic.targetBestGlobalPos);
            }
            else
            {
                move = behaviors.CalculateMove(agent, context, this);
            }

            move *= driveFactor;

            if (move.sqrMagnitude > squareMaxSpeed)
            {
                move = move.normalized * maxSpeed;
            }
            agent.Move(move);


            //for (int i = 0; i < moveArray.Length; i++)
            //{
            //    if (moveArray[i].sqrMagnitude > squareMaxSpeed)
            //    {
            //        moveArray[i] = moveArray[i].normalized * maxSpeed;
            //    }
            //    agent.Move(moveArray[i]);
            //}
        }
    }