コード例 #1
0
    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);
    }
コード例 #2
0
        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);
        }
コード例 #3
0
    // 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);
            }
        }
    }
コード例 #4
0
ファイル: CubeMovement.cs プロジェクト: retevil/StateAndForm
 public override void MoveTo(Vector3 direction)
 {
     RB.AddForce(direction.normalized * speed * Time.deltaTime);
     RB.AddTorque(new Vector3(direction.z, 0, direction.x * -1) * torqueForce);
 }