예제 #1
0
    void FixedUpdate()
    {
        float XPosition      = transform.position.x;
        float YPosition      = transform.position.y;
        float OffsetDistance = 0.0f;

        if (EntryTime < EntryDelay)
        {
            OffsetDistance = EntryDistance * (1 - EntryTime / EntryDelay);
            EntryTime     += Time.deltaTime;
        }
        else if (DelayTime < ClawDelay)
        {
            DelayTime += Time.deltaTime;
        }
        else if (ClawTravel < ClawDistance)
        {
            ClawTravel += ClawSpeed * Time.deltaTime;
        }
        else
        {
            EntryTime      = 0;
            DelayTime      = 0;
            ClawTravel     = 0;
            OffsetDistance = EntryDistance;
            clawPosition   = (ClawPosition)Mathf.FloorToInt(Random.value * 4);
        }

        if (clawPosition > ClawPosition.TopRight)
        {
            transform.rotation = Quaternion.Euler(0, 0, 180);
            if (clawPosition == ClawPosition.RightTop)
            {
                YPosition = TopPosition;
            }
            else
            {
                YPosition = BottomPosition;
            }
            XPosition = HorizontalPosition + OffsetDistance - ClawTravel;
        }
        else
        {
            transform.rotation = Quaternion.Euler(0, 0, 270);
            if (clawPosition == ClawPosition.TopLeft)
            {
                XPosition = LeftPosition;
            }
            else
            {
                XPosition = RightPosition;
            }
            YPosition = VerticalPosition + OffsetDistance - ClawTravel;
        }
        transform.localPosition = new Vector3(XPosition, YPosition, 0);
    }
예제 #2
0
 void Start()
 {
     clawPosition = (ClawPosition)Mathf.FloorToInt(Random.value * 4);
 }