예제 #1
0
    void Update()
    {
        m_pAnimator.Update();

        if (Input.GetMouseButtonDown(0))
        {
            isMouseDown = true;
        }
        if (Input.GetMouseButtonUp(0))
        {
            isMouseDown = false;
        }

        if (isMouseDown)
        {
            RaycastHit hit;
            Ray        ray = followCamera.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0));
            if (Physics.Raycast(ray, out hit, 100, (1 << TERRAIN_LAYER)))
            {
                moveToPoint = hit.point;
                canMove     = true;

                dir = Vector3.Normalize(moveToPoint - transform.position);
                Quaternion rot    = transform.rotation;
                Quaternion target = Quaternion.LookRotation(dir);
                Vector3    euler  = target.eulerAngles;
                euler.z = 0;
                euler.x = 0;
                rot     = Quaternion.Euler(euler);

                transform.rotation = rot;

                currentHeroState = heroState.run;
            }
        }

        if (!canMove && !isGround)
        {
            return;
        }
        if (Vector3.Distance(moveToPoint, transform.position) < 0.5f)
        {
            canMove          = false;
            currentHeroState = heroState.idle;
        }
        else
        {
            Vector3 m = dir * speed * Time.deltaTime;
            m.y   = 0;
            flags = GetComponent <CharacterController>().Move(m);
        }
    }
예제 #2
0
    void Update()
    {
        m_pAnimator.Update();

        if (Input.GetMouseButtonDown(0))
        {
            isMouseDown = true;
        }
        if (Input.GetMouseButtonUp(0))
        {
            isMouseDown = false;
        }

        if (isMouseDown)
        {
            RaycastHit hit;
            Ray        ray = followCamera.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0));
            if (Physics.Raycast(ray, out hit, 1 << TERRAIN_LAYER))
            {
                moveToPoint = hit.point;
                canMove     = true;

                m_nma.SetDestination(moveToPoint);

                currentHeroState = heroState.run;
            }
        }

        if (!canMove && !isGround)
        {
            return;
        }
        if (Vector3.Distance(moveToPoint, transform.position) < 0.5f)
        {
            canMove          = false;
            currentHeroState = heroState.idle;
        }
    }
예제 #3
0
    // Update is called once per frame
    void Update()
    {
        if (Time.deltaTime > 0 && unit.moveSpeed > 0)
        {
            sprite.Resume();

            if (unit.HP < unit.maxHP) hpRegen();

            if (wait)
            {
                if (sprite.CurrentFrame().index == lastFrame)
                {
                    actionChooser();
                    wait = false;
                }
            }
            //handle input
            else if(unit_type == Unit.type.hero)
            {
                //handle attack
                if (Input.GetKeyDown(KeyCode.Z))
                {
                    sprite.PlayOnce("hero-attack");
                    lastFrame = 5;
                    wait = true;
                    currentState = heroState.attacking;
                }

                //handle skills
                else if (Input.GetKeyDown(KeyCode.X) || skill1Triggered)
                {
                    sprite.PlayOnce("hero-cast");
                    lastFrame = 22;
                    wait = true;
                    currentState = heroState.castingSpell1;
                }
                else if (Input.GetKeyDown(KeyCode.C) || skill2Triggered)
                {
                    sprite.PlayOnce("hero-cast");
                    lastFrame = 22;
                    wait = true;
                    currentState = heroState.castingSpell2;
                }
                else if (Input.GetKeyDown(KeyCode.V) || skill3Triggered)
                {
                    sprite.PlayOnce("hero-cast");
                    lastFrame = 22;
                    wait = true;
                    currentState = heroState.castingSpell3;
                }

                //handle movement
                else if (Input.GetKey(KeyCode.LeftArrow))
                {
                    if (sprite.transform.position.x > -(levelLength))
                        move(-Vector3.right);
                }
                else if (Input.GetKey(KeyCode.RightArrow))
                {
                    if (sprite.transform.position.x < levelLength)
                        move(Vector3.right);
                }
                else if (Input.GetKey(KeyCode.UpArrow))
                {
                    if (sprite.transform.position.z < 90)
                        move(Vector3.forward);
                }
                else if (Input.GetKey(KeyCode.DownArrow))
                {
                    if (sprite.transform.position.z > -90)
                        move(-Vector3.forward);
                }
                else
                {
                    sprite.PlayLoop("hero-idle");
                }
            }
        } else sprite.Pauze();
    }