private void Awake() { playerLookAt = GetComponent <PlayerLookAt>(); aimTransform = transform.Find("Aim"); aimAnimator = aimTransform.GetComponent <Animator>(); aimGunEndPointTransform = aimTransform.Find("GunEndPointPosition"); aimShellPositionTransform = aimTransform.Find("ShellPosition"); }
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; } }
public void AddPlayer(int i, PlayerLookAt t) { players[i] = t; }