コード例 #1
0
ファイル: RacketSurface.cs プロジェクト: a-pucci/TTT_scripts
    // public override void OnTriggerEnter(Collider other) {
    //  if (other.gameObject.CompareTag("Ball")) {
    //      TriggerHit(other.gameObject.GetComponent<BallPhysics>());
    //  }
    // }

    #endregion

    #region Methods

    public override void TriggerHit(BallPhysics ball)
    {
        if (character.playerStatus == PlayerStatus.Dashing)
        {
            GameAnalytics.AddEvent(character.playerPosition, EventKeys.DashAndHit);
        }
        if (character.currentSwingStrength == character.swingType.strongSwing)
        {
            GameAnalytics.AddEvent(character.playerPosition, EventKeys.SuccessfulChargedStrike);
        }
        if (character.currentSwingStrength == character.swingType.lightSwing)
        {
            GameAnalytics.AddEvent(character.playerPosition, EventKeys.FailedChargedStrike);
        }
        GameAnalytics.AddEvent(character.playerPosition, EventKeys.HitBall);

        float multiplier = (ball.transform.position.y > transform.position.y ?
                            Mathf.Lerp(character.swingType.highSwingYMultiplier, 1, Mathf.InverseLerp(transform.position.y + (boxCollider.size.y * 0.5f), transform.position.y, ball.transform.position.y)) :
                            Mathf.Lerp(character.swingType.lowSwingYMultiplier, 1, Mathf.InverseLerp(transform.position.y - (boxCollider.size.y * 0.5f), transform.position.y, ball.transform.position.y)));

        float swingY = character.swingType.swingY * multiplier;

        Vector3 newDirection = (Vector3.right * character.input.x * character.swingType.swingX) +
                               (Vector3.up * swingY) +
                               ((character.playerPosition == PlayerPosition.Top ? Vector3.back : Vector3.forward) * character.currentSwingStrength);

        ball.photonView.RequestOwnership();
        ball.currentBounces = 0;
        ball.ballSwingPower = character.currentCharge;

        //#region Swing VFX
        //switch (character.currentCharge) {
        //	case SwingPower.Regular:
        //		AudioManager.instance.PlaySound(ball.ballType.ballHitSound,false,0.8f);
        //		vfx = ball.ballType.mediumShotEffect;
        //		break;
        //	case SwingPower.Strong:
        //		AudioManager.instance.PlaySound(ball.ballType.ballHitSoundHard,false, 0.8f);
        //		vfx = ball.ballType.strongShotEffect;
        //		break;
        //	default:
        //		AudioManager.instance.PlaySound(ball.ballType.ballHitSound,false);
        //		vfx = ball.ballType.weakShotEffect;
        //		break;
        //}

        //vfx.Play(ball.transform.position, Vector3.zero);
        //#endregion

        ball.velocity = ball.transform.position + newDirection;
        if (PhotonNetwork.IsConnected)
        {
            ball.photonView.RPC(nameof(ball.PlayHitEffect), RpcTarget.All, character.currentCharge.ToString(), ball.transform.position);
        }
        else
        {
            ball.PlayHitEffect(character.currentCharge.ToString(), ball.transform.position);
        }
    }