// 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); }