Esempio n. 1
0
    // Update is called once per frame
    public void RoleUpdate()
    {
        if (!gameObject.activeSelf)
        {
            return;
        }

        buffManager.Update();

        updateTime += Time.deltaTime;

        while (updateTime > updateInterval)
        {
            updateTime -= updateInterval;
            float forcey = buffManager.GetProperty(BaseBuff.BuffProperty.speed);
            if (forcey == 0)
            {
                moveForce = new Vector3(moveForce.x * 0.9f, moveForce.y * 0.98f);
            }
            else
            {
                moveForce = new Vector3(moveForce.x * 0.9f, moveForce.y);
            }

            transform.position += moveForce;

            //摄像机跟随
            Vector3 vec = (transform.position - InGameManager.GetInstance().gamecamera.transform.position) * 0.5f;
            InGameManager.GetInstance().gamecamera.transform.position += new Vector3(0, Mathf.Max(vec.y, 0), 0);
        }

        //----屏幕边缘检测----
        Rect  gamerect = InGameManager.GetInstance().GetGameRect();
        float x        = moveForce.x;
        float y        = moveForce.y;

        if (transform.position.x < gamerect.x)
        {
            x *= -1;
            transform.position = new Vector3(gamerect.x, transform.position.y, transform.position.z);
        }
        else if (transform.position.x > gamerect.x + gamerect.width)
        {
            x *= -1;
            transform.position = new Vector3(gamerect.x + gamerect.width, transform.position.y, transform.position.z);
        }

        if (transform.position.y < gamerect.y)
        {
            Die();
            return;
        }
        //else if(transform.position.y > gamerect.y + gamerect.height){
        //    y = -Mathf.Abs(y);
        //    transform.position = new Vector3(transform.position.x, gamerect.y + gamerect.height, transform.position.z);
        //}
        y        -= Time.deltaTime * 0.6f;
        moveForce = new Vector3(x, y, 0);

        //----旋转缩放----
        Vector3 dir = Vector3.Normalize(moveForce);

        float angle = GameCommon.GetVectorAngle(new Vector3(0, 1, 0), dir);

        iconObj.transform.rotation = Quaternion.Euler(0, 0, angle);

        float scale = Mathf.Min(Vector3.Distance(Vector3.zero, moveForce) * 5f, 1f) * 0.17f;

        iconObj.transform.localScale = iconScale + new Vector3(-iconScale.y * scale, iconScale.y * scale, 0);
    }