예제 #1
0
    // 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();
    }
예제 #2
0
    // 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);
        }
    }