Beispiel #1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        //AccelDecel player = chopper.GetComponent<AccelDecel>();

        /*
         * if (chopper.transform.position.y <= -65)
         * {
         *  player.Speed = 0;
         *  // coll.attachedRigidbody.useGravity = false;
         *  chopper.GetComponent<Rigidbody>().useGravity = false;
         *   chopper.transform.position = new Vector3(0, -40, 0);
         *  chopper.transform.Translate(Vector3.up * Time.deltaTime * hover);
         *  //SceneManager.LoadScene("Test2");
         * }*/
        if (chopper.transform.position.y <= -45)
        {
            float yVel = rb.velocity.y + Physics.gravity.y;
            rb.AddForce(0, -yVel, 0, ForceMode.Acceleration);
            rb.AddForce(0, Input.GetAxis("Vertical") * 5, 0);
            //player.Speed = 0;
            // coll.attachedRigidbody.useGravity = false;
            //chopper.GetComponent<Rigidbody>().useGravity = false;
            //chopper.transform.position = new Vector3(0, -40, 0);
            //chopper.transform.Translate(Vector3.up * Time.deltaTime * player.Speed * -7);
            // hover = hover * 2;
            //SceneManager.LoadScene("Test2");
        }

        /*  if( chopper.transform.position.y <= -55)
         * {
         *   // player.Speed = 0;
         *    chopper.GetComponent<Rigidbody>().useGravity = false;
         *
         *   // chopper.transform.position = new Vector3(transform.position.x, -45, transform.position.z);
         *    chopper.transform.Translate(Vector3.up * Time.deltaTime * player.Speed *-15);
         * }*/
        else
        {
            chopper.GetComponent <Rigidbody>().useGravity = true;
        }
    }
    private void Start()
    {
        // Get all quadcopters in the scene
        Quadcopter[] drones = FindObjectsOfType <Quadcopter>();

        // Throw an exception if there is more than one quadcopter
        if (drones.Length > 1)
        {
            throw new System.Exception("Multiple quadcopters detected.");
        }

        // Initialization
        drone       = drones[0];
        motorThrust = (drone.MotorNE.maxThrust + drone.MotorNW.maxThrust + drone.MotorSE.maxThrust + drone.MotorSW.maxThrust) / 4.0f;
        rBody       = drone.GetComponent <Rigidbody>();


        // Make sure the quadcopter has a rigidbody
        if (rBody == null)
        {
            throw new System.Exception("Rigidbody on quadcopter is missing.");
        }


        // Make sure the rigidbody parameters have not been modified
        if (rBody.isKinematic == true || rBody.useGravity == false || rBody.constraints != RigidbodyConstraints.None)
        {
            throw new System.Exception("Quadcopter rigidbody paramters do not match.");
        }


        // Initiazation
        lastPos    = drone.transform.position;
        lastVel    = rBody.velocity;
        lastMotors = new float[] { drone.MotorNE.Power, drone.MotorNW.Power, drone.MotorSE.Power, drone.MotorSW.Power };
    }