// Update is called once per frame public override void Update() { Vector2 targetLocation = inputGetter.getInputLocation(); float distanceToTarget = (targetLocation - (Vector2)transform.position).magnitude; if (distanceToTarget > deadZone) { transform.position = Vector2.MoveTowards(transform.position, targetLocation, distanceToTarget * speed * Time.deltaTime); } if (Base.target != null) { rotationSpeed = -baseRotationSpeed * 8.0f; } else { rotationSpeed = baseRotationSpeed; } base.Update(); }
// Update is called once per frame void Update() { Vector2 targetPos = inputGetter.getInputLocation(); Vector2 direction = targetPos - (Vector2)transform.parent.position; float angle = Vector2.Angle(transform.up, direction); if (Mathf.Abs(angle) > deadZone) { float orthagonalDirection = Vector2.Dot(direction, new Vector2(-transform.up.y, transform.up.x)); if (orthagonalDirection < 0) { angle = -angle; } else if (orthagonalDirection == 0) { if (Vector2.Dot(Vector2.up, direction) > 0) { angle = -angle; } } transform.RotateAround(transform.parent.position, Vector3.forward, angle); } }