Beispiel #1
0
    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        float   distanceToTarget = Vector3.Distance(seeker.transform.position, target.transform.position);
        Vector3 steering         = new Vector3();

        //If we are outside of lurk range, steer towards lurk range
        if (distanceToTarget > lurkDistance + (lurkRange * 0.5f) || distanceToTarget < lurkDistance - (lurkRange * 0.5f))
        {
            Vector3 nrm = (seeker.transform.position - target.transform.position).normalized;
            steering = seeker.GetSteering(target.transform.position + (nrm * lurkDistance));
        }
        else if (body.velocity.magnitude > 0)
        {
            body.velocity *= decelerationRate;
        }

        body.velocity += steering * Time.fixedDeltaTime;

        if (steering == Vector3.zero)
        {
            seeker.transform.forward = (target.transform.position - seeker.transform.position).normalized;
        }
        else
        {
            seeker.transform.forward = steering;
        }


        animator.SetBool("targetDefensesAreUp", targetDefenseModule.DefensesViable);
    }
Beispiel #2
0
    //OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Vector3 steering = seeker.GetSteering(target);

        body.velocity           += steering * Time.fixedDeltaTime;
        seeker.transform.forward = steering.normalized;
    }
    protected override void FixedUpdate()
    {
        if (target == null)
        {
            HandleImpact();
            return;
        }
        if (!shouldSteer)
        {
            return;
        }
        Vector3 steering = seeker.GetSteering(target);

        Body.velocity    += steering * Time.fixedDeltaTime;
        transform.forward = steering.normalized;

        if (maxSpeed > 0 && Body.velocity.magnitude > maxSpeed)
        {
            Body.velocity = Vector3.ClampMagnitude(Body.velocity, maxSpeed);
        }
    }