Esempio n. 1
0
    public bool PickHitPoint(Vector2 screenPos, out IHitPoint hitPoint, out GameObject targetGo)
    {
        Ray        ray = Camera.main.ScreenPointToRay(screenPos);
        RaycastHit hit;

        hitPoint = null;
        targetGo = null;
        if (Physics.Raycast(ray, out hit, Mathf.Infinity, DefineMaskLayer.MASK_TARGET))
        {
            foreach (IHitPoint c in mHitPoints)
            {
                if (c.gameObject == hit.transform.gameObject)
                {
                    hitPoint = c;
                    targetGo = hit.transform.gameObject;
                    break;
                }
            }
            if (hitPoint == null)
            {
                return(false);
            }
            return(true);
        }
        return(false);
    }
Esempio n. 2
0
    // TODO: 将继承FSMBase的类整理统一处理
    private void OnPlayerInput()
    {
        for (int i = 0; i < Define.MAX_PLAYER_NUMBER; ++i)
        {
            Player player = ioo.playerManager.GetPlayer(i);
            // 玩家进入游戏
            if (ioo.playerManager.IsPlaying(i))
            {
                // 水标显示
                Vector3 pos    = Vector3.zero;
                Camera  camera = ioo.gameMode.UICamera;
                Canvas  canvas = ioo.gameMode.UICanvas;
                if (RectTransformUtility.ScreenPointToWorldPointInRectangle(canvas.transform as RectTransform, screenPos[i], camera, out pos))
                {
                    ioo.playerManager.SetWaterPosition(i, pos);
                }

                ICharacter character = null;
                IHitPoint  hitPoint  = null;
                GameObject goBind    = null;

                // 选角色图像
                if (!ioo.playerManager.HasHead(i) && ioo.gameMode.State == E_GameState.SelectCharacter)
                {
                    if (ioo.characterSystem.PickSelectCharacter(screenPos[i], out character, out goBind))
                    {
                        character.UnderAttack(player);
                    }
                }

                // 选地图
                if (ioo.gameMode.State == E_GameState.SelectMap)
                {
                    if (ioo.characterSystem.PickSelectMap(screenPos[i], out character, out goBind))
                    {
                        character.UnderAttack(player);
                    }
                }

                if (player.FireTime >= Define.GAME_CONFIG_WATER_DAMAGE_INTERVAL)
                {
                    player.FireTime = 0;

                    // 游戏中
                    if (ioo.gameMode.State == E_GameState.Play)
                    {
                        if (ioo.characterSystem.PickCharacter(screenPos[i], out character, out goBind))
                        {
                            character.UnderAttack(player);
                        }

                        if (ioo.characterSystem.PickHitPoint(screenPos[i], out hitPoint, out goBind))
                        {
                            hitPoint.UnderAttack(player);
                        }
                    }
                }
                else
                {
                    player.FireTime += Time.fixedDeltaTime;
                }
            }
        }
    }
Esempio n. 3
0
 public void RemoveHitPoint(IHitPoint hitPoint)
 {
     mHitPoints.Remove(hitPoint);
 }
Esempio n. 4
0
 // 射击点
 public void AddHitPoint(IHitPoint hitPoint)
 {
     mHitPoints.Add(hitPoint);
 }