Exemple #1
0
    void FixedUpdate()
    {
        RaycastHit hit;
        Ray        ray       = cam.ViewportPointToRay(new Vector3(.5f, .5f, cam.nearClipPlane));
        bool       intersect = Physics.Raycast(ray, out hit, 3f);

        lock (_lock) {
            if (intersect && withinEpsilon(hit.point.y) && !inMotion && farFromOtherPlants(hit.point) && !mouseHold)
            {
                // Show option to plant plant
                seed.GetComponent <Renderer> ().enabled = true;
                seed.transform.position = hit.point;
            }
            else
            {
                seed.GetComponent <Renderer> ().enabled = false;
            }

            if (Input.GetMouseButton(0))
            {
                if (intersect && withinEpsilon(hit.point.y) && !inMotion && farFromOtherPlants(hit.point) && !mouseHold)
                {
                    // Plant plant using plantManager
                    plantManager.AddNewPlant(hit.point);
                    inMotion = false;
                    seed.GetComponent <Renderer> ().enabled = false;
                }
                else             // Continue moving
                {
                    Vector3 forwardVector = go.transform.forward;
                    forwardVector.y = 0;
                    rb.velocity     = forwardVector * speed;
                    inMotion        = true;
                }
                mouseHold = true;         // Here so we can plant exactly one seed
            }
            else
            {
                rb.velocity = Vector3.zero;
                inMotion    = false;
                mouseHold   = false;
            }
        }
        cam.gameObject.transform.position = new Vector3(cam.gameObject.transform.position.x, 22, cam.gameObject.transform.position.z);
    }