void FixedUpdateEngine() { var forcePosition = RB.position; var forward = _engineBias; //if (_playerControlled) forward += Input.GetAxis("Vertical"); if (_playerControlled) { forward += joystick.Vertical; } RB.AddForceAtPosition(transform.forward * _enginePower * forward, forcePosition, ForceMode.Acceleration); var sideways = _turnBias; //if (_playerControlled) sideways += (Input.GetKey(KeyCode.A) ? -1f : 0f) + (Input.GetKey(KeyCode.D) ? 1f : 0f); //if (_playerControlled) sideways += (Input.GetKey(KeyCode.A) ? -1f : 0f) + (Input.GetKey(KeyCode.D) ? 1f : 0f); if (_playerControlled) { sideways = sideways + joystick.Horizontal; } var rotVec = transform.up + _turningHeel * transform.forward; RB.AddTorque(rotVec * _turnPower * sideways, ForceMode.Acceleration); }
protected override void Initalize() { Vector3 initForce = new Vector3(Random.Range(-1f, 1f), 0, Random.Range(-1f, 1f)).normalized *Random.Range(minStartingForce, maxStartingForce); Vector3 initTorque = new Vector3(0, 1, 0) * Random.Range(minStartingTorque, maxStartingTorque); RB.AddForce(initForce); RB.AddTorque(initTorque); }
// Update is called once per frame void Update() { if (playerIsOn && !playerIsAlreadyOn) { GameManager.Instance.player.playerAnim.MountToWall(); RB.velocity = new Vector3(GameManager.Instance.player.lVel.x, RB.velocity.y, GameManager.Instance.player.lVel.z); playerIsAlreadyOn = true; } else if (!playerIsOn && playerIsAlreadyOn) { GameManager.Instance.player.playerAnim.DismountEverything(); playerIsAlreadyOn = false; } if (playerIsAlreadyOn) { if (RB.velocity.magnitude < ballMaxSpeed) { //RB.AddForce(GameManager.Instance.player.moveDir * GameManager.Instance.player.moveInputMagnitude * 10f); RB.AddTorque((new Vector3(GameManager.Instance.player.moveDir.z, 0f, -GameManager.Instance.player.moveDir.x)) * GameManager.Instance.player.moveInputMagnitude * 10f); } } }
public override void MoveTo(Vector3 direction) { RB.AddForce(direction.normalized * speed * Time.deltaTime); RB.AddTorque(new Vector3(direction.z, 0, direction.x * -1) * torqueForce); }