コード例 #1
0
    //dont touch
    IEnumerator Jump(float distance)
    {
        Debug.Log(distance);

        if (jumpRoutine == null)
        {
            previousJumpTime = Time.time;
            state            = cacState.JUMPING;
            float xpos = 0;
            while (xpos < distance)
            {
                xpos += distance / JUMP_FRAMES;
                transform.position += transform.forward * distance / JUMP_FRAMES;
                float sinSol = 3f * Mathf.Sin(Mathf.PI / distance * xpos);
                //float quadSol = (-1f * Mathf.Pow(xpos, 2)) + (distance * xpos);
                transform.position = new Vector3(transform.position.x, initYPos + sinSol, transform.position.z);

                yield return(0);
            }
            transform.position = new Vector3(transform.position.x, initYPos, transform.position.z);

            state = cacState.IDLE;
        }
        else
        {
            Debug.Log("jump called while midair");
        }
        jumpRoutine = null;
    }
コード例 #2
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag.Equals("enemy") && (Time.time - previousJumpTime) < JUMP_REFRESH * 2)
     {
         state = cacState.ATTACKING;
         if (jumpRoutine != null)
         {
             StopCoroutine(jumpRoutine);
         }
         jumpRoutine        = null;
         transform.position = new Vector3(transform.position.x, initYPos, transform.position.z);
         attack(collision);
     }
 }
コード例 #3
0
    IEnumerator Charge()
    {
        Debug.Log("started charge");
        float initTime = Time.time;
        float outTime  = 0;

        marker.transform.position = transform.position;
        state = cacState.CHARGING;

        while (true)
        {
            outTime = Time.time - initTime;
            if (outTime > MAX_POWER)
            {
                outTime = MAX_POWER;
            }
            outTime *= 12;

            RaycastHit hit = new RaycastHit();
            //Physics.Raycast(transform.position, transform.forward, out hit);
            Ray r = new Ray(transform.position, transform.forward);
            Physics.Raycast(r, out hit, 999f, mask);

            if (hit.collider != null && hit.distance < outTime)
            {
                Debug.Log("we are jumping less now");
                outTime = hit.distance - 0.8f; //minus some offset
            }
            marker.transform.position = transform.position + transform.forward * outTime;

            if (MOUSE_CONTROLS && Input.GetKeyUp(KeyCode.Mouse0))
            {
                break;
            }
            else if (!MOUSE_CONTROLS && Input.GetKeyUp(KeyCode.Space))
            {
                break;
            }
            yield return(0);
        }
        marker.transform.position += transform.up * 800;
        IEnumerator jumpCoroutine = Jump(outTime);

        jumpRoutine = StartCoroutine(jumpCoroutine);
    }
コード例 #4
0
    // Use this for initialization
    void Start()
    {
        MOUSE_CONTROLS   = gameObject.GetComponent <controlSettingsHandler>().getMouseControls();
        initYPos         = transform.position.y;
        previousJumpTime = 0;
        mouseInit        = Vector3.zero;
        state            = cacState.IDLE;
        center           = new Vector3(Screen.width / 2, Screen.height / 2);
        midair           = false;

        this.gameObject.GetComponent <Rigidbody>().freezeRotation = true;
        marker = GameObject.Instantiate(landMarker);
        marker.transform.position = new Vector3(0, 800, 0);

        if (MOUSE_CONTROLS)
        {
            StartCoroutine("mouseControls");
        }
        else
        {
            StartCoroutine("keyboardControls");
        }
    }
コード例 #5
0
 public void setIdle()
 {
     state = cacState.IDLE;
 }