Beispiel #1
0
    public void OnCollisionEnter(Collision col)
    {
        Rigidbody   rb = col.rigidbody;
        MapleCopter c  = rb.GetComponent <MapleCopter>();

        if (c != null && c.isPlayer && c.falling)
        {
            hitSound.Play();
            c.LoseControl();
            c.RagdollOn();
            StartCoroutine(HitDuck(c));
        }
    }
Beispiel #2
0
    IEnumerator PlaceSeed()
    {
        float t = 0;

        yield return(null);

        magnifyMesh.gameObject.SetActive(false);
        curCopter        = null;
        isPilotingCopter = false;
//        copterCam.enabled = false;

        //this is where the planting FX go
    }
Beispiel #3
0
    IEnumerator ShootSeed(MapleCopter copter)
    {
        popSound.Play();

        leafParticles.transform.position = copter.transform.position;
        leafParticles.transform.forward  = copter.transform.position - transform.position;
        leafParticles.Emit(50);



        foreach (Transform t2 in copter.GetComponentsInChildren <Transform>())
        {
            t2.gameObject.layer = LayerMask.NameToLayer("Copter");
        }

        copter.gameObject.layer = LayerMask.NameToLayer("Copter");

        Vector3 trajectory = (copter.transform.position - transform.position).normalized;


        Vector3 lastPos = copter.transform.position;
        float   force   = 75 - copter.transform.position.y;
        float   t       = 0;

        float rotSpeed = copter.lefty ? -100 : 100;

        //SynthSound.i.PlayNote(60);

        while (t < 1)
        {
            Vector3 targetPos = new Vector3(trajectory.x, 0, trajectory.z) * 10f + (Vector3.up * trajectory.y * (Mathf.Cos(t * Mathf.PI)) * (1 - t) * force);
            copter.transform.position += targetPos * Time.deltaTime;

            copter.transform.RotateAround(Tree.instance.transform.position, Vector3.up,
                                          Time.deltaTime * Mathf.Clamp01(1 - t * 2f) * rotSpeed);
            copter.transform.right = (lastPos - copter.transform.position);
            lastPos = copter.transform.position;

            t += Time.deltaTime * 0.75f;
            yield return(null);
        }

        copter.enabled = true;
        copter.Drop();
    }
Beispiel #4
0
    IEnumerator HitDuck(MapleCopter c)
    {
        hasCopter = false;
        surprise  = true;
        surpriseAnim.SetTrigger("surprise");
        c.falling = false;


        if (moving)
        {
            target   = Random.onUnitSphere * Random.Range(4f, 10f);
            target.y = transform.position.y;
        }
        else
        {
            timeUntilMove = 0;
        }

        yield return(new WaitForSeconds(0.5f));

        surprise = false;
    }
Beispiel #5
0
    IEnumerator PopSeed()
    {
        bendSound.PlayOneShot(creaks[Random.Range(0, creaks.Length)]);
        isCreatingCopter = true;

        int index = Random.Range(0, treeLeaves.Count);

        Transform l             = treeLeaves[index];
        Vector3   originalScale = l.localScale;

        Vector3 lookDir = (new Vector3(transform.position.x, l.position.y, transform.position.z) - l.position).normalized;

        if (Vector3.Dot(new Vector3(-lookDir.z, lookDir.y, lookDir.x), mainCam.transform.parent.forward) >
            Vector3.Dot(new Vector3(lookDir.z, lookDir.y, -lookDir.x), mainCam.transform.parent.forward))
        {
            left = true;
        }
        else
        {
            left = false;
        }

        GameObject copter = Random.Range(0, 100) > 50 ? RightCopter : LeftCopter;

        GameObject newCopter = Instantiate(copter, l.position,
                                           Quaternion.identity);

        newCopter.transform.up = Random.onUnitSphere;
        float t = 0;

        while (Input.GetKey(KeyCode.Space))
        {
            copterCam.transform.forward = newCopter.transform.position - copterCam.transform.position;

            magnifyMesh.position = l.transform.position - mainCam.transform.forward * 5f;
            magnifyMesh.rotation = Quaternion.LookRotation(mainCam.transform.forward, mainCam.transform.up);

            //mainCam.orthographicSize = Mathf.Lerp(mainCam.orthographicSize, copterZoom, Time.deltaTime);

            l.localScale = Vector3.Lerp(originalScale, new Vector3(originalScale.x, 0.5f, originalScale.z), Mathf.Pow(t, 0.3f));
            t           += Time.deltaTime * 3;
            if (t > 0.5f)
            {
                mainCam.transform.parent.position = Vector3.SmoothDamp(mainCam.transform.parent.position, new Vector3(transform.position.x, l.position.y + 3f, transform.position.z), ref velocity, 0.3f);

                lookDir = (new Vector3(transform.position.x, l.position.y, transform.position.z) - l.position).normalized;

                lookDir = left
                        ? new Vector3(-lookDir.z, lookDir.y, lookDir.x)
                        : new Vector3(lookDir.z, lookDir.y, -lookDir.x);

                mainCam.transform.parent.forward = Vector3.Lerp(mainCam.transform.parent.forward, lookDir, Time.deltaTime * 3);

                magnifyMesh.gameObject.SetActive(true);

                if (instructions.gameObject.activeSelf)
                {
                    instructions.gameObject.SetActive(false);
                }
            }
            yield return(null);
        }

        if (Input.GetKeyUp(KeyCode.Space) && t < 0.5f)
        {
            Vector3 curScale = l.localScale;
            t = 1;
            magnifyMesh.gameObject.SetActive(false);

            bendSound.Stop();
            while (t > 0)
            {
                l.localScale = Vector3.Lerp(originalScale, curScale, t);
                t           -= Time.deltaTime * 2;
                yield return(null);
            }

            isCreatingCopter = false;
            yield break;
        }

        popSound.Play();


        timeSinceSpawned = 0;
//            magnifyMesh.gameObject.SetActive(false);

        leafParticles.transform.position = l.position;
        leafParticles.transform.forward  = l.position - transform.position;
        leafParticles.Emit(50);

        isPilotingCopter = true;
        curCopter        = newCopter.GetComponent <MapleCopter>();
//            curCopter.enabled = false;
        foreach (Transform t2 in curCopter.GetComponentsInChildren <Transform>())
        {
            t2.gameObject.layer = LayerMask.NameToLayer("Copter");
        }

        curCopter.gameObject.layer = LayerMask.NameToLayer("Copter");
        curCopter.isPlayer         = true;

        Vector3 trajectory = (l.position - transform.position).normalized;


        Vector3 lastPos = newCopter.transform.position;
        float   force   = 75 - l.position.y;

        t = 0;

        float rotSpeed = curCopter.lefty ? -100 : 100;

        //SynthSound.i.PlayNote(60);

        while (t < 1)
        {
            mainCam.nearClipPlane = Mathf.Lerp(mainCam.nearClipPlane, clipPlaneZoom, t);
            Vector3 targetPos = new Vector3(trajectory.x, 0, trajectory.z) * 10f + (Vector3.up * trajectory.y * (Mathf.Cos(t * Mathf.PI)) * (1 - t) * force);
            newCopter.transform.position += targetPos * Time.deltaTime;

            newCopter.transform.RotateAround(Tree.instance.transform.position, Vector3.up,
                                             Time.deltaTime * Mathf.Clamp01(1 - t * 2f) * rotSpeed);
            newCopter.transform.right = (lastPos - newCopter.transform.position);
            lastPos      = newCopter.transform.position;
            l.localScale = Vector3.Lerp(l.localScale, originalScale, t);
            t           += Time.deltaTime * 0.75f;
            yield return(null);
        }

        curCopter.enabled = true;
        isCreatingCopter  = false;
        curCopter.Drop();


        //curCopter.GetComponentInChildren<ParticleSystem>().Play();


        TargetCopter();
    }