Пример #1
0
    public override SteeringOutput.SteeringOutput getSteering()
    {
        SteeringOutput.SteeringOutput steering = new SteeringOutput.SteeringOutput(new Vector2(.0f, .0f), .0f);
        Vector2 dir = Target.getPosition() - Character.getPosition();

        if (dir.magnitude == 0)
        {
            return(steering);
        }
        Debug.Log(dir);

        GameObject dummy = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefab/Dummy"));
        AgentMeta  aux   = dummy.GetComponent <AgentMeta> ();

        aux.setPosition(Target.getPosition());
        aux.setOrientation(Mathf.Atan2(-dir.x, dir.y) * Mathf.Rad2Deg);
        Debug.Log(Mathf.Atan2(-dir.x, dir.y) * Mathf.Rad2Deg);
        Behaviour alinear = new Align(aux, Character, Mathf.PI / 10, Mathf.PI / 100, .1f);

        //steering.linear = steering.linear.normalized * Character.maxAcceleration;
        steering = alinear.getSteering();
        Debug.Log(steering.angular);
        MonoBehaviour.Destroy(dummy);
        return(steering);
    }
Пример #2
0
    public override SteeringOutput.SteeringOutput getSteering()
    {
        wanderOrientation += base.randomBinomial() * wanderRate;
        //Debug.Log (wanderOrientation);

        float targetOrientation = wanderOrientation + Character.getOrientation();

        float targetOrientationRadian = targetOrientation * Mathf.Deg2Rad;
        float orientationRadian       = Character.getOrientation() * Mathf.Deg2Rad;
        //Debug.Log (targetOrientationRadian);
        //Debug.Log (targetOrientation);

        Vector2 target = Character.getPosition()
                         + wanderOffset * new Vector2(Mathf.Cos(orientationRadian), Mathf.Sin(orientationRadian)).normalized
                         + wanderRadius * new Vector2(Mathf.Cos(targetOrientationRadian), Mathf.Sin(targetOrientationRadian)).normalized;
        //Debug.Log (Mathf.Cos (180f * Mathf.Deg2Rad));
        //Debug.Log(new Vector2 (Mathf.Cos (targetOrientationRadian), Mathf.Sin (targetOrientationRadian)));

        //Debug.Log (target);

        GameObject dummy      = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefab/Dummy"));
        AgentMeta  dummyAgent = dummy.GetComponent <AgentMeta> ();

        dummyAgent.setPosition(target);
        dummyAgent.setOrientation(wanderOrientation + Character.getOrientation());
        //dummyAgent.setOrientation (

        //Debug.Log (dummyAgent.getPosition ()- Character.getPosition());

        //Behaviour face = new Face (dummyAgent, Character);
        //Debug.Log (dummyAgent.getPosition () - Character.getPosition());
        //Debug.Log (dummyAgent.getOrientation ());
        //Debug.Log (Character.getOrientation ());

        Behaviour seek = new SeekWhileLooking(dummyAgent, Character);

        //Behaviour lwyg = new LWYG (Character);

        //SteeringOutput.SteeringOutput steering = seek.getSteering () + lwyg.getSteering();
        SteeringOutput.SteeringOutput steering = seek.getSteering();
        Debug.Log(steering.angular);

        //steering.linear = Character.maxAcceleration * new Vector2 (Mathf.Cos (orientationRadian), Mathf.Sin (orientationRadian));

        MonoBehaviour.Destroy(dummy);
        return(steering);
    }
Пример #3
0
    public override SteeringOutput.SteeringOutput getSteering()
    {
        SteeringOutput.SteeringOutput steering = new SteeringOutput.SteeringOutput();
        Vector2 velocity = Character.getVelocity();

        if (velocity.magnitude == 0)
        {
            return(steering);
        }

        GameObject dummy = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefab/Dummy"));
        AgentMeta  aux   = dummy.GetComponent <AgentMeta> ();

        aux.setPosition(new Vector2(0.0f, 0.0f));
        aux.setOrientation((Mathf.Atan2(-velocity.x, velocity.y) * Mathf.Rad2Deg) % 360.0f);
        Behaviour alinear = new Align(aux, Character, Mathf.PI / 100, Mathf.PI / 10, .1f);

        //steering.linear = steering.linear.normalized * Character.maxAcceleration;
        steering = alinear.getSteering();
        MonoBehaviour.Destroy(dummy);

        return(steering);
    }