コード例 #1
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.UpdateDirection(player.input.horizontal);
        player.HandleSlopeFactor(deltaTime);
        player.HandleAcceleration(deltaTime);
        player.HandleFriction(deltaTime);
        player.HandleGravity(deltaTime);
        player.HandleFall();
        if (!player.HandleLedgeCheck().Item2)
        {
            player.state.ChangeState <WalkPlayerState>();
        }

        if (player.input.actionDown)
        {
            player.HandleJump();
        }

        if (player.HandleLedgeCheck().Item1)
        {
            player.state.ChangeState <LedgeGrabStateFront>();
        }

        if (player.input.horizontal != 0 || player.velocity.x != 0)
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #2
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        var PushResult = player.HandlePushCheck();

        if (PushResult.Item1)
        {
            if (player.input.actionDown)
            {
                player.HandleJump();
            }
            //apply push to physical object
            if (player.input.horizontal != 0)
            {
                var rigidbody = PushResult.gameObject.GetComponent <Rigidbody>();
                rigidbody.AddForce(player.skin.transform.right.normalized * player.input.horizontal);
            }

            if (Mathf.Sign(player.velocity.x) != Mathf.Sign(player.input.horizontal))
            {
                player.state.ChangeState <WalkPlayerState>();
            }
        }
        else
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #3
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        Player = player.PlayerObject.transform;



        player.HandleAcceleration(deltaTime);

        player.velocity = Vector3.zero;

        if (player.input.right)
        {
            player.velocity = Vector3.right * 20;
        }
        if (player.input.left)
        {
            player.velocity = Vector3.left * 20;
        }
        if (player.input.up)
        {
            player.velocity = Vector3.up * 20;
        }
        if (player.input.down)
        {
            player.velocity = Vector3.down * 20;
        }
    }
コード例 #4
0
 public override void Enter(CharControlMotor player)
 {
     player.lookingUp  = true;
     player.attacking  = false;
     player.velocity.x = 0;
     player.ChangeBounds(1);
 }
コード例 #5
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleGravity(deltaTime);
        player.HandleFall();

        power -= ((power / player.stats.SpinpowerLoss) / 256f) * deltaTime;

        if (player.grounded)
        {
            if (player.input.down)
            {
                if (player.input.actionDown)
                {
                    player.sonicState = CharControlMotor.SonicState.ChargingSpin;
                    power            += player.stats.SpinchargePower;
                    power             = Mathf.Min(power, player.stats.SpinmaxChargePower);
                    player.PlayAudio(player.audios.spindash_charge, 0.5f);
                }
            }
            else
            {
                player.state.ChangeState <RollPlayerState>();
            }
        }
    }
コード例 #6
0
 public override void Step(CharControlMotor player, float deltaTime)
 {
     if (!player.HandleLedgeCheck().Item1)
     {
         player.state.ChangeState <WalkPlayerState>();
     }
     if (player.HandleLedgeCheck().Item2)
     {
         player.state.ChangeState <LedgeGrabStateBack>();
     }
     if (player.input.actionDown)
     {
         player.HandleJump();
     }
     if (player.input.horizontal != 0)
     {
         if (Mathf.Abs(player.velocity.x) >= player.stats.minSpeedToBrake)
         {
             player.state.ChangeState <BrakePlayerState>();
         }
         else
         {
             if (player.velocity.x > 0)
             {
                 player.velocity.x = -player.stats.turnSpeed;
             }
             else
             {
                 player.velocity.x = player.stats.turnSpeed;
             }
         }
     }
 }
コード例 #7
0
 protected override void OnCollect(CharControlMotor player)
 {
     for (int i = 0; i < ringAmount; i++)
     {
         player.RingGot();
     }
 }
コード例 #8
0
 public override void Exit(CharControlMotor player)
 {
     player.particles.brakeSmoke.Stop();
     player.disableSkinRotation = false;
     player.PlayerObject.GetComponent <PlayerMotor>().height = 1;
     player.PlayerObject.GetComponent <PlayerMotor>().ChangeBounds(0);
 }
コード例 #9
0
 protected override void OnCollect(CharControlMotor player)
 {
     player.invincible      = true;
     player.invincibleTimer = 15;
     FindObjectOfType <StageManager>().StopMusic();
     Invoke("UnpauseMusic", TimeUntilMusicStartsAgain);
 }
コード例 #10
0
 public override void Exit(CharControlMotor player)
 {
     //player.skin.ActiveBall(false);
     player.velocity.x = (player.stats.SpinminReleasePower + (Mathf.Floor(power) / 2)) * player.direction;
     player.PlayAudio(player.audios.spindash, 0.5f);
     player.particles.spindashSmoke.Stop();
     player.sonicState = CharControlMotor.SonicState.Spindash;
 }
コード例 #11
0
 void UpdateFollowTarget(Transform newTarget)
 {
     followTarget = newTarget;
     if (followTarget != null)
     {
         charCtrl = followTarget.GetComponent <CharControlMotor>();
     }
 }
コード例 #12
0
 public override void Enter(CharControlMotor player)
 {
     player.attacking = true;
     player.particles.brakeSmoke.Play();
     player.disableSkinRotation = true;
     player.PlayAudio(player.audios.spindash, 0.5f);
     player.PlayerObject.GetComponent <PlayerMotor>().ChangeBounds(1);
 }
コード例 #13
0
 public override void Enter(CharControlMotor player)
 {
     player.attacking = false;
     player.ChangeBounds(0);
     player.PlayAudio(player.audios.brake);
     player.UpdateDirection(player.velocity.x);
     //player.skin.SetEulerY(90 - player.direction * 90);
     player.particles.brakeSmoke.Play();
 }
コード例 #14
0
 public override void Enter(CharControlMotor player)
 {
     player.GroundExit();
     player.ChangeBounds(0);
     player.invincible   = true;
     player.halfGravity  = true;
     player.attacking    = false;
     player.GotHurtCheck = true;
 }
コード例 #15
0
 private void DestroyMonitor(CharControlMotor player)
 {
     NonBrokebody.SetActive(false);
     collider.enabled = false;
     audio.PlayOneShot(explosionSound);
     BrokenBody.SetActive(true);
     explosionParticle.Play();
     StartCoroutine(ReleaseItem(player));
 }
コード例 #16
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleGravity(deltaTime);

        if (player.grounded)
        {
            player.velocity.x = 0;
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #17
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleAcceleration(deltaTime);
        player.HandleGravity(deltaTime);

        if (player.velocity.y <= 0)
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #18
0
 public override void Enter(CharControlMotor player)
 {
     player.GroundExit();
     player.EnableCollision(false);
     player.attacking           = false;
     player.Death               = true;
     player.disableSkinRotation = true;
     player.disableCameraFollow = true;
     player.velocity            = Vector3.zero;
     player.velocity.y          = player.stats.diePushUp;
     player.PlayAudio(player.audios.death);
 }
コード例 #19
0
    public override void Exit(CharControlMotor player)
    {
        //player.skin.ActiveBall(false);
        if (chargeAmount >= chargeNeededToShootOff)
        {
            player.velocity.x = (player.stats.PeelminReleasePower + (Mathf.Floor(power) / 2)) * player.direction;
            player.PlayAudio(player.audios.peel_launch, 0.5f);
            player.sonicState = CharControlMotor.SonicState.Peel;
        }

        player.particles.spindashSmoke.Stop();
        player.disableSkinRotation = false;
    }
コード例 #20
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleSlopeFactor(deltaTime);
        player.HandleFriction(deltaTime);
        player.HandleDeceleration(deltaTime);
        player.HandleGravity(deltaTime);
        player.HandleFall();


        ///* Controls the height of the playerspin ~Birb64 *///

        if (player.PlayerObject.transform.eulerAngles.z > 100 && player.PlayerObject.transform.eulerAngles.z < 180)
        {
            player.PlayerObject.GetComponent <PlayerMotor>().height = 0.012f * player.PlayerObject.transform.eulerAngles.z;
        }
        if (player.PlayerObject.transform.eulerAngles.z < 260 && player.PlayerObject.transform.eulerAngles.z > 180)
        {
            player.PlayerObject.GetComponent <PlayerMotor>().height = 0.012f * (180 - Mathf.Abs(player.PlayerObject.transform.eulerAngles.z - 180));
        }

        ///* Controls the width of the playerspin ~Birb64 *///
        if (player.PlayerObject.transform.eulerAngles.z > 30 && player.PlayerObject.transform.eulerAngles.z < 180)
        {
            player.PlayerObject.GetComponent <PlayerMotor>().wallExtents = 0.01f * player.PlayerObject.transform.eulerAngles.z;
        }
        if (player.PlayerObject.transform.eulerAngles.z < 330 && player.PlayerObject.transform.eulerAngles.z > 180)
        {
            player.PlayerObject.GetComponent <PlayerMotor>().wallExtents = 0.01f * (180 - Mathf.Abs(player.PlayerObject.transform.eulerAngles.z - 180));
        }
        else if (player.PlayerObject.transform.eulerAngles.z < 180 || player.PlayerObject.transform.eulerAngles.z > 260)
        {
            player.PlayerObject.GetComponent <PlayerMotor>().wallExtents = 0.02f;
        }

        if (player.grounded)
        {
            if (player.input.actionDown)
            {
                player.HandleJump();
            }
            else if (Mathf.Abs(player.velocity.x) < player.stats.minSpeedToUnroll)
            {
                player.state.ChangeState <WalkPlayerState>();
            }
        }
        else
        {
            player.state.ChangeState <JumpPlayerState>();
        }
    }
コード例 #21
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleGravity(deltaTime);
        player.HandleFall();

        if (player.grounded && player.input.down)
        {
            if (player.input.actionDown)
            {
                player.state.ChangeState <SpindashPlayerState>();
            }
        }
        else
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #22
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        timer += deltaTime;

        // Check if we have reached beyond 2 seconds.
        // Subtracting two is more accurate over time than resetting to zero.
        if (timer > waitTime)
        {
            player.state.ChangeState <WalkPlayerState>();
            // Remove the recorded 2 seconds.
            timer -= waitTime;
        }
        if (player.velocity.x > 0 || player.velocity.y > 0)
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #23
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.UpdateDirection(player.input.horizontal);
        player.HandleAcceleration(deltaTime);
        player.HandleGravity(deltaTime);

        if (!player.grounded && player.attacking)
        {
            if (player.input.actionUp && player.velocity.y > player.stats.minJumpHeight)
            {
                player.velocity.y = player.stats.minJumpHeight;
            }
        }
        else
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #24
0
    private void HandlePlayerSnaping(CharControlMotor player)
    {
        if (!snapPositionX && !snapPositionY)
        {
            return;
        }
        var playerPosition = player.transform.position;

        if (snapPositionX)
        {
            playerPosition.x += transform.position.x;
        }

        if (snapPositionY)
        {
            playerPosition.y = transform.position.y;
        }

        player.transform.position = playerPosition;
    }
コード例 #25
0
    public override void Enter(CharControlMotor player)
    {
        power            = 0;
        player.attacking = true;
        //player.skin.ActiveBall(true);
        player.ChangeBounds(1);
        player.PlayAudio(player.audios.spindash_charge, 0.5f);

        // Move particle emission right
        if (player.direction == -1)
        {
            player.particles.spindashSmoke.transform.localScale = new Vector3(-1, 1, 0);
        }
        // Move particle emission left
        else
        {
            player.particles.spindashSmoke.transform.localScale = new Vector3(1, 1, 0);
        }
        player.particles.spindashSmoke.Play();
    }
コード例 #26
0
    private IEnumerator ReleaseItem(CharControlMotor player)
    {
        var position = item.transform.position;
        var t        = 0f;

        while (t < 0.5f)
        {
            t          += Time.deltaTime;
            position.y += 2f * Time.deltaTime;
            item.transform.position = position;
            yield return(null);
        }

        audio.PlayOneShot(collectSound, collectSoundVolume);

        OnCollect(player);

        yield return(new WaitForSeconds(.25f));

        item.SetActive(false);
    }
コード例 #27
0
    protected override void OnMotorStart()
    {
        musicSource         = GetComponent <AudioSource>();
        characterController = GetComponent <CharControlMotor>();
        time = 0;
        anim = GetComponentInChildren <Animator>();
        //spriteRend = anim.GetComponent<SpriteRenderer>();
        anim.SetBool("OnGround", grounded);
        anim.SetBool("Jump", jumped);
        audioSources = transform.Find("Audio");
        anim.SetBool("Gothurt", GotHurtCheck);
        anim.SetBool("Death", Death);


        Debug.Log(acceleration + "," + deceleration + "," + turnAroundSpeed);
        Debug.Log(acceleration * Time.deltaTime + "," + deceleration * Time.deltaTime + "," + turnAroundSpeed * Time.deltaTime);

        InitializeStateMachine();
        InitializeSkin();
        InitializeLostRingPool();
    }
コード例 #28
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleGravity(deltaTime);
        player.HandleFall();

        chargeAmount += Time.deltaTime * chargeSpeed;

        power -= ((power / player.stats.PeelpowerLoss) / 256f) * deltaTime;

        if (player.grounded)
        {
            if (player.input.up)
            {
                if (player.input.actionDown)
                {
                    player.sonicState = CharControlMotor.SonicState.ChargingPeel;
                    power            += player.stats.PeelchargePower;
                    power             = Mathf.Min(power, player.stats.PeelmaxChargePower);
                    //player.PlayAudio(player.audios.peel, 0.5f);
                }
            }
            else if (player.input.down)
            {
                if (Mathf.Abs(player.velocity.x) > player.stats.minSpeedToRoll)
                {
                    player.sonicState = CharControlMotor.SonicState.Rolling;
                    player.state.ChangeState <RollPlayerState>();
                    //player.PlayAudio(player.audios.spin, 0.5f);
                }
                else if (player.angle < player.stats.minAngleToSlide)
                {
                    player.state.ChangeState <CrouchPlayerState>();
                }
            }
            else
            {
                player.state.ChangeState <WalkPlayerState>();
            }
        }
    }
コード例 #29
0
    public override void Step(CharControlMotor player, float deltaTime)
    {
        player.HandleDeceleration(deltaTime);
        player.HandleGravity(deltaTime);
        player.HandleFall();

        if (player.grounded && (Mathf.Sign(player.input.horizontal) != Mathf.Sign(player.direction)))
        {
            if (player.input.actionDown)
            {
                player.HandleJump();
            }
            else if ((Mathf.Abs(player.velocity.x) <= player.stats.turnSpeed) || player.input.horizontal == 0)
            {
                player.state.ChangeState <WalkPlayerState>();
            }
        }
        else
        {
            player.state.ChangeState <WalkPlayerState>();
        }
    }
コード例 #30
0
    public override void Enter(CharControlMotor player)
    {
        player.attacking = true;
        player.jumped    = true;
        player.ChangeBounds(1);

        dashTimer = 0.0f;
        active    = false;
        charging  = false;

        jumpSlowDownAmount = player.velocity.x / 8;

        if (player.velocity.x != 0)
        {
            if (player.velocity.x < 0)
            {
                player.velocity.x = player.velocity.x - jumpSlowDownAmount;
            }
            else if (player.velocity.x > 0)
            {
                player.velocity.x = player.velocity.x - jumpSlowDownAmount;
            }
        }
    }