コード例 #1
0
 public void Update()
 {
     transform.position = playerGameObject.transform.position;
     if (lastMopState != playerController.mopState)
     {
         lastMopState = playerController.mopState;
         ChangeToAnimation();
     }
 }
コード例 #2
0
ファイル: PlayerController.cs プロジェクト: Keavon/Atomic-Age
    void PerformMopping()
    {
        if (moppingTime == 0)
        {
            Debug.Log("Mopping");
            animationController.SetActiveCycle(PlayerAnimationCycle.Mopping);

            bool playerTouchingMoppableSurface = touchingGrounds.Any(ground => ground.layer == 0);
            bool playerHasLiquidOnMop          = mopState != MopState.CleanMop && mopState != MopState.NoMop;

            // Check if we have a liquid we can place
            if (playerTouchingMoppableSurface && playerHasLiquidOnMop)
            {
                Fluid fluidToPlace;
                if (mopState == MopState.OilMop)
                {
                    fluidToPlace = Fluid.Oil;
                }
                else if (mopState == MopState.GlueMop)
                {
                    fluidToPlace = Fluid.Glue;
                }
                else
                {
                    fluidToPlace = Fluid.Ferro;
                }

                PlaceLiquid(transform.position, fluidToPlace);
                mopState = MopState.CleanMop;
            }
            // If we don't have a liquid, let's see if we can pick any up
            else
            {
                CheckPickupLiquid(transform.position);
            }
        }

        moppingTime += Time.fixedDeltaTime;

        if (moppingTime > 1)
        {
            stateMachine.SetBool("Trigger_BreakMopping", true);
        }
    }
コード例 #3
0
ファイル: PlayerController.cs プロジェクト: Keavon/Atomic-Age
    // Written by Trace Rainbolt
    private void CheckPickupLiquid(Vector3 position)
    {
        Vector2   hitSize       = new Vector2(1, 0.5f);
        float     distance      = 1;
        LayerMask moppableLayer = LayerMask.GetMask("Liquids");

        Vector2 origin = new Vector2(position.x, position.y + 0.6f);

        RaycastHit2D hit = Physics2D.BoxCast(origin, hitSize, 0, Vector2.down, distance, moppableLayer);

        // We found some lqiuid, so set our mop liquid
        if (hit.collider != null)
        {
            LiquidBehavior liquidBehavior = hit.collider.GetComponent <LiquidBehavior>();

            if (hit.collider.CompareTag("Oil"))
            {
                mopState = MopState.OilMop;
            }
            else if (hit.collider.CompareTag("Glue"))
            {
                mopState = MopState.GlueMop;
            }
            else if (hit.collider.CompareTag("Ferrofluid"))
            {
                mopState = MopState.FerrofluidMop;
            }

            if (liquidBehavior)
            {
                liquidBehavior.RemoveLiquid();
            }
            else
            {
                Destroy(hit.collider.gameObject);
            }
        }
    }
コード例 #4
0
 private void Start()
 {
     currentState = MopState.Dropped;
 }