// Update is called once per frame void Update() { for (int i = 0; i < maxControllerID; i++) { if (input.InputButtonDown(EInputButtons.A, i) && controller.Select(p => p.InputIndex).Contains(i) == false) { TextMeshProUGUI text = Instantiate(playerInfoPrefab); text.rectTransform.SetParent(mainText); text.rectTransform.localPosition = new Vector3(0, yOffset, 0) * controller.Count; ControllerData data = new ControllerData(i, text); controller.Add(data); Debug.Log("Received Input from Controller " + i); } } for (int i = 0; i < controller.Count; i++) { ControllerData data = controller[i]; if (input.InputButtonDown(EInputButtons.B, data.InputIndex)) { data.Team = (data.Team + 1); if (data.Team == Team.LastIndex) { data.Team = 0; } } data.UpdateText(); } bool startGame = true; foreach (ControllerData data in controller) { if (input.InputButton(EInputButtons.Y, data.InputIndex) == false) { startGame = false; } } if (controller.Count > 0 && startGame) { ConnectedController.Instance.controllerData = controller; UnityEngine.SceneManagement.SceneManager.LoadScene("MainScene"); } }
// Update is called once per frame void Update() { if (_inputRequester.InputButtonDown(EInputButtons.Start)) { SceneManager.LoadScene(0); } if (_inputRequester.InputButtonDown(EInputButtons.RB)) { int currentSceneIndex = SceneManager.GetActiveScene().buildIndex + 1; if (currentSceneIndex >= 4) { currentSceneIndex = 0; } SceneManager.LoadScene(currentSceneIndex); } }
// PlayerUpdate needs to be called by Playermanager to fix Execution order! public void Update() { float speed = stats.CurrentSpeed; Vector2 old = aim; aim = new Vector2(inputRequester.InputAxis(EInputAxis.viewHorizontal, stats.InputID), -inputRequester.InputAxis(EInputAxis.viewVertical, stats.InputID)).normalized; if (aim.magnitude == 0) { aim = old; } if (hook.hookState == HookState.hooked) { float vx = rigidbody.velocity.x; playerBody.transform.rotation = Quaternion.identity; playerBody.transform.Rotate(Vector3.up, Mathf.Clamp(-rigidbody.velocity.x * 30, -90, 90) + 90); playerBody.transform.Rotate(Vector3.forward, .8f * Vector2.Angle(vx >= 0?Vector2.right:Vector2.left, rigidbody.velocity)); } else { playerBody.transform.rotation = Quaternion.Euler(0, Mathf.Clamp(-rigidbody.velocity.x * 30, -90, 90) + 90, 0); } if (inputRequester.InputButtonDown(EInputButtons.RB, stats.InputID)) { if (hook.hookState == HookState.hooked) { //playerBody.rig.velocity = new Vector3(0, 0); playerBody.rig.AddForce(playerBody.rig.velocity.normalized * swingForce + Vector2.up * swingForce * 0.25f); // playerBody.rig.AddForce((hook.transform.position - playerBody.rig.transform.position).normalized * pullForce); //playerBody.rig.AddForce((hook.transform.position - playerBody.rig.transform.position).normalized * pullForce); hook.hookState = HookState.returning; } else if (playerBody.IsGrounded()) { playerBody.rig.velocity = new Vector3(playerBody.rig.velocity.x, 0); playerBody.rig.AddForce(Vector3.up * jumpForce); } } if (inputRequester.InputAxis(EInputAxis.triggerLeft, stats.InputID) > .1f) { //shoot here if (player.attackTimer <= 0) { playerBody.Attack(); player.source.PlayOneShot((player.Team == Team.Sand?player.sShovel:player.fSwing), .2f); var rot = Quaternion.Euler(0, 0, Vector2.SignedAngle(Vector2.right, aim)); Instantiate(player.Team == Team.Sand?player.attackPart:player.attackPart2, playerBody.transform.position, rot); Instantiate(player.splashPart, playerBody.transform.position, rot); for (float a = -20f; a < 20f; a += 4f) { var hit = Physics2D.Raycast(playerBody.transform.position + Quaternion.Euler(0, 0, a) * aim, Quaternion.Euler(0, 0, a) * aim, 5f, LayerMask.GetMask("Player", "Environment")); if (hit) { var pb = hit.transform.GetComponent <PlayerBody>(); if (pb != null) { pb.GetHit(playerBody); Debug.DrawRay(playerBody.transform.position, Quaternion.Euler(0, 0, a) * aim * 5f, Color.red, 2f); break; } else { Debug.DrawLine(playerBody.transform.position, hit.point, Color.green, 2f); } } Debug.DrawRay(playerBody.transform.position + Quaternion.Euler(0, 0, a) * aim, Quaternion.Euler(0, 0, a) * aim * 100f, Color.white, 2f); // check if hitting burnable object var burnableHit = Physics2D.Raycast(playerBody.transform.position + Quaternion.Euler(0, 0, a) * aim, Quaternion.Euler(0, 0, a) * aim, 5f, LayerMask.GetMask("Player", "Burnable")); if (burnableHit) { Burnable b = burnableHit.transform.GetComponent <Burnable>(); Debug.Log(burnableHit.transform.gameObject.name); if (b != null) { switch (player.Team) { case Team.Sand: b.RemoveBurn(1); break; case Team.Fire: b.InflictBurn(1); break; case Team.LastIndex: break; default: break; } } } } player.attackTimer = player.stats.CurrentAttackSpeed; } } Vector3 position = playerBody.rig.transform.position; float xVel = playerBody.rig.velocity.x; if (!playerBody.IsGrounded()) { float prev = xVel; xVel = Mathf.MoveTowards(xVel, inputRequester.InputAxis(EInputAxis.movementHorizontal, stats.InputID) * speed, Time.deltaTime * 20); if (hook.hookState == HookState.hooked && Mathf.Abs(xVel) < Mathf.Abs(prev)) { xVel = prev; } } else { xVel = Mathf.MoveTowards(xVel, inputRequester.InputAxis(EInputAxis.movementHorizontal, stats.InputID) * speed, Time.deltaTime * 40); if (Mathf.Abs(xVel) > .2) { Instantiate(walkDust, playerBody.transform.position + Vector3.down * .5f, Quaternion.identity); } } playerBody.rig.velocity = new Vector3(xVel, playerBody.rig.velocity.y); if (inputRequester.InputButtonDown(EInputButtons.LB, stats.InputID)) { if (hook.hookState == HookState.hooked) { hook.PullToHook(); playerBody.rig.AddForce(Vector3.up * jumpForce * 0.5f); // playerBody.rig.AddForce(playerBody.rig.velocity.normalized * pullForce); playerBody.rig.AddForce((hook.transform.position - playerBody.rig.transform.position).normalized * pullForce); //playerBody.rig.AddForce((hook.transform.position - playerBody.rig.transform.position).normalized * pullForce); hook.hookState = HookState.returning; } if (hook.hookState == HookState.stored) { hook.ShootHook(aim.normalized); } } if (playerBody.transform.position.y < -25) { GameManager.Instance.RespawnPlayer(this.GetComponent <Player>()); } }