コード例 #1
0
 private void Awake()
 {
     playerLookAt              = GetComponent <PlayerLookAt>();
     aimTransform              = transform.Find("Aim");
     aimAnimator               = aimTransform.GetComponent <Animator>();
     aimGunEndPointTransform   = aimTransform.Find("GunEndPointPosition");
     aimShellPositionTransform = aimTransform.Find("ShellPosition");
 }
コード例 #2
0
    void Update()
    {
        Vector3 worldDeltaPosition = agent.nextPosition - transform.position;

        // Map 'worldDeltaPosition' to local space
        float   dx            = Vector3.Dot(transform.right, worldDeltaPosition);
        float   dy            = Vector3.Dot(transform.forward, worldDeltaPosition);
        Vector2 deltaPosition = new Vector2(dx, dy);

        // Low-pass filter the deltaMove
        float smooth = Mathf.Min(1.0f, Time.deltaTime / 0.15f);

        smoothDeltaPosition = Vector2.Lerp(smoothDeltaPosition, deltaPosition, smooth);

        // Update velocity if time advances
        if (Time.deltaTime > 1e-5f)
        {
            velocity = smoothDeltaPosition / Time.deltaTime;
        }

        bool shouldMove = velocity.magnitude > 0.5f && agent.remainingDistance > agent.radius;

        // Update animation parameters
        anim.SetBool("move", shouldMove);
        anim.SetFloat("xVel", velocity.x);
        anim.SetFloat("yVel", velocity.y);

        PlayerLookAt lookAt = GetComponent <PlayerLookAt>();

        if (lookAt)
        {
            lookAt.lookAtTargetPosition = agent.steeringTarget + transform.forward;
        }

        // Pull character towards agent
        if (worldDeltaPosition.magnitude > agent.radius)
        {
            transform.position = agent.nextPosition - 0.9f * worldDeltaPosition;
        }
    }
コード例 #3
0
 public void AddPlayer(int i, PlayerLookAt t)
 {
     players[i] = t;
 }