void LateUpdate()
    {
        if (begun)
        {
            Vector3 newPos = new Vector3(player.transform.position.x, transform.position.y, player.transform.position.z);
            if (Vector3.Distance(transform.position, newPos) > maxDistance)
            {
                transform.position = Vector3.Slerp(transform.position, newPos, 0.01f);
            }
            else if (Vector3.Distance(transform.position, newPos) < minDistance)
            {
                transform.position = Vector3.SlerpUnclamped(newPos, transform.position, 1.005f);
            }
            Vector3 anchorPos = RotatePointAroundPivot(transform.position, player.transform.position + new Vector3(0, player.transform.position.y + 4, -2), 5 * Time.deltaTime);
            if (GroundSinControl.CalculateSinPosition(transform.position) + 2.4f > transform.position.y)
            {
                transform.position = Vector3.SlerpUnclamped(anchorPos, transform.position, 0.015f);
            }
            else if (Vector3.Angle(Vector3.down, player.transform.position - transform.position) < minAngle)
            {
                anchorPos          = RotatePointAroundPivot(transform.position, player.transform.position + new Vector3(0, player.transform.position.y, -2), 5 * Time.deltaTime);
                transform.position = Vector3.Slerp(transform.position, anchorPos, 0.02f);
            }
            else if (Vector3.Distance(transform.position, player.transform.position) > 2)
            {
                transform.position = Vector3.Slerp(transform.position, anchorPos, 0.01f);
            }
            else if (Vector3.Distance(transform.position, player.transform.position) < 1f || player.transform.position.y + verticalOffset > transform.position.y)
            {
                transform.position = Vector3.Slerp(anchorPos, transform.position, 0.01f);
            }

            transform.LookAt(new Vector3(player.transform.position.x, player.transform.position.y + lookVerticalOffset, player.transform.position.z));
        }
    }
    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical   = Input.GetAxis("Vertical");


        if (moveHorizontal == 0 && moveVertical == 0)
        {
            speedCurveTime = 0;
        }
        if (speedCurveTime <= 1)
        {
            speedCurveTime += speedCurveIncrement;
        }


        Vector3 forwardProjection = transform.position + (forwardVector * 2);
        float   hillModifier;

        if (GroundSinControl.CalculateSinPosition(transform.position) > GroundSinControl.CalculateSinPosition(forwardProjection))
        {
            hillModifier = 1.1f;
        }
        else
        {
            hillModifier = 0.85f;
        }

        forwardVector = Quaternion.AngleAxis(moveHorizontal, Vector3.up) * forwardVector;
        movement      = forwardVector * moveVertical;
        float currentSpeed = speed * speedCurve.Evaluate(speedCurveTime);

        jellyMesh.AddForce(movement * currentSpeed * hillModifier, true);        // added hillmodifier to here
        Camera.main.transform.RotateAround(transform.position, Vector3.up, moveHorizontal);
    }
    // Update is called once per frame
    void Update()
    {
        heightAdjust = new Vector3(
            0.0f,
            GroundSinControl.CalculateSinPosition(transform.position),
            0.0f);

        transform.position = position + heightAdjust;
    }
Beispiel #4
0
    // Update is called once per frame
    void Update()
    {
        heightAdjust = new Vector3(
            0.0f,
            GroundSinControl.CalculateSinPosition(transform.position),
            0.0f);

        transform.Rotate(new Vector3(45, 15, 30) * Time.deltaTime);
        transform.position = posOri + heightAdjust;        // + new Vector3(0,2.2f,0);
    }
Beispiel #5
0
//	public void EelDown(){
//		StartCoroutine (EelFall ());
//	}

    IEnumerator EelDance()
    {
        for (float t = 0; t <= 1; t += 0.1f * Time.deltaTime)
        {
            transform.position = Vector3.Lerp(transform.position,
                                              new Vector3(transform.position.x,
                                                          (GroundSinControl.CalculateSinPosition(transform.position) + 1.5f),
                                                          transform.position.z), 0.0005f * t);

            yield return(null);
        }
    }
 IEnumerator ShellRaise()
 {
     for (float t = 0; t <= 1; t += 0.1f * Time.deltaTime)
     {
         rb.useGravity      = false;
         transform.position = Vector3.Lerp(transform.position,
                                           new Vector3(transform.position.x,
                                                       GroundSinControl.CalculateSinPosition(transform.position) + 3,
                                                       transform.position.z), t);
         hasRisen = true;
         crashParticle.Stop();
         yield return(null);
     }
 }
Beispiel #7
0
    // Update is called once per frame
    void Update()
    {
        heightAdjust = new Vector3(
            0.0f,
            GroundSinControl.CalculateSinPosition(transform.position),
            0.0f);

        transform.RotateAround(
            posOri,
            Vector3.forward,
            0.1f * Mathf.PI);
//			rotationCurve.Evaluate (Time.time));

        transform.position = posOri + heightAdjust;
    }
Beispiel #8
0
    IEnumerator Attack()
    {
        Vector3 loomingPos    = Vector3.Lerp(transform.position, player.transform.position, 0.6f);
        Vector3 startPosition = transform.position;

        loomingPos.y += 1.2f;
        for (float t = 0; t < 1; t += Time.deltaTime)
        {
            transform.LookAt(player.transform);
            transform.position = Vector3.Lerp(startPosition, loomingPos, t);
            yield return(null);
        }
        while (attacking)
        {
            for (float t = 0; t < 3; t += Time.deltaTime)
            {
                transform.LookAt(player.transform);
                loomingPos = player.transform.position + new Vector3(0, 1.2f, 0);
                Vector3 temp = new Vector3(transform.position.x, loomingPos.y + GroundSinControl.CalculateSinPosition(transform.position) + verticalAttackOffset, transform.position.z);
                transform.position = Vector3.Lerp(transform.position, temp, 0.1f);
                transform.RotateAround(loomingPos, Vector3.up, 20 * Time.deltaTime);
                yield return(null);
            }
            transform.LookAt(player.transform);
            Vector3 divingVector = player.transform.position;
            divingVector.y = Mathf.Sin(Time.time + attackTime - Mathf.Floor(player.transform.position.x) * 0.2f - Mathf.Floor(player.transform.position.z) * 0.2f) + verticalAttackOffset;
            Vector3 startPos = transform.position;
            for (float t = 0; t < attackTime; t += Time.deltaTime)
            {
                transform.LookAt(divingVector);
                transform.position = Vector3.Slerp(startPos, divingVector, t / attackTime);
                yield return(null);
            }
            divingVector = startPos + new Vector3(divingVector.x - startPos.x, startPos.y, divingVector.z);
            startPos     = transform.position;
            for (float t = 0; t < attackTime; t += Time.deltaTime)
            {
                transform.LookAt(divingVector);
                transform.position = Vector3.Slerp(startPos, divingVector, t / attackTime);
                //transform.Translate(Vector3.Slerp(divingVector, divingVector * -1, t) * Time.deltaTime);
                yield return(null);
            }
            gameObject.tag = "PredatorStraight";
            yield return(new WaitForSeconds(2));
        }

        /*// lerp to player
         * do {
         *      transform.LookAt (player.transform);
         *      Debug.Log("Attack!");
         *      Vector3 targetPosition = player.transform.position;
         *      startPosition = transform.position;
         *      //Debug.Log("AttackVector: " + attackVector.ToString());
         *      Ray heightRay = new Ray(startPosition, Vector3.down * 10);
         *      RaycastHit heightRayHit;
         *      float attackHeight = 0;
         *      if(Physics.Raycast(heightRay, out heightRayHit, 10)) {
         *              attackHeight = heightRayHit.distance;
         *      }
         *      for(float t = 0; t < 1; t += Time.deltaTime) {
         *              transform.position = Vector3.Lerp(startPosition, targetPosition, Mathf.SmoothStep(0, 1, t));
         *              if(Physics.Raycast(heightRay, out heightRayHit, attackHeight)) {
         *                      if(heightRayHit.distance < attackHeight) {
         *                              startPosition.y += 1f * Mathf.Clamp(attackHeight / heightRayHit.distance, 0, 1);
         *                              heightRay = new Ray(startPosition, Vector3.down * 10);
         *                      }
         *              }
         *              else if(Physics.Raycast(new Ray(transform.position, Vector3.down * 10), out heightRayHit, attackHeight)) {
         *                      startPosition.y += (0.7f * Mathf.Clamp(attackHeight / heightRayHit.distance, 0, 1) * Time.deltaTime);
         *                      heightRay = new Ray(startPosition, Vector3.down * 10);
         *              }
         *
         *              yield return null;
         *      }
         *      Debug.Log("After attack " + (player.transform.position - transform.position).ToString());
         *      //Vector3 temp = transform.position;
         *      //transform.position = Vector3.Lerp (temp, player.transform.position, 0.1f);
         *      yield return new WaitForSeconds(2);
         * } while(attacking);*/
    }