예제 #1
0
    public SteeringOutput Wander()
    {
        DynamicAlign a = new DynamicAlign(agent.k, target.k, maxAngularAcceleration, maxRotation, targetRadiusA, slowRadiusA);
        DynamicFace  f = new DynamicFace(new Kinematic(), a);

        return(new DynamicWander(wanderOffset, wanderRadius, wanderRate, maxAcceleration, f).getSteering());
    }
예제 #2
0
 public DynamicWander(float _wanderOffset, float _wanderRadius, float _wanderRate,
                      float _maxAcceleration, DynamicFace _f)
 {
     wanderOffset    = _wanderOffset;
     wanderRadius    = _wanderRadius;
     wanderRate      = _wanderRate;
     maxAcceleration = _maxAcceleration;
     f = _f;
     //wanderOrientation = f.a.character.orientation;
 }
예제 #3
0
    IEnumerator AnimateFaceCO(DynamicFace dynamicFace)
    {
        float t          = 0f;
        var   startScale = dynamicFace.transform.localScale;
        float period     = 0.25f;
        float maxScale   = 0.2f;

        while (t < 1f)
        {
            t += Time.deltaTime / period;
            var pingpong = Mathf.PingPong(t, 0.5f);
            dynamicFace.transform.localScale = startScale + Vector3.one * pingpong * maxScale;
            yield return(null);
        }
    }
예제 #4
0
    public SteeringOutput Wander()
    {
        if (startTime > wanderRate)
        {
            wanderOrientation += randomBinomial() * wanderRate;
            startTime          = 0f;
        }
        startTime += Time.deltaTime;
        DynamicAlign   a  = new DynamicAlign(agent.k, new Kinematic(), maxAngularAcceleration, maxRotation, targetRadiusA, slowRadiusA);
        DynamicFace    f  = new DynamicFace(new Kinematic(), a);
        DynamicSeek    ds = new DynamicSeek(agent.k, new Kinematic(), maxAcceleration);
        DynamicWander  dw = new DynamicWander(wanderOffset, wanderRadius, wanderRate, maxAcceleration, wanderOrientation, ds);
        SteeringOutput so = dw.getSteering();

        agent.DrawCircle(dw.targetPos, wanderRadius);
        //agent.DrawLine(agent.k.position, asVector(wanderOrientation));
        return(so);
    }