コード例 #1
0
 private void SetSelectedGroupToRotator()
 {
     HexagonGroupRotator.Instance.Activate();
     HexagonGroupRotator.Instance.UpdateRotation(_selectedGroup.Rotation);
     HexagonGroupRotator.Instance.SetPosition(HexagonManager.Instance.PixelToWorld(_selectedGroup.GetCenter()));
     HexagonGroupRotator.Instance.SetHexagons(HexagonManager.Instance.GetHexagon(_selectedGroup.A),
                                              HexagonManager.Instance.GetHexagon(_selectedGroup.B),
                                              HexagonManager.Instance.GetHexagon(_selectedGroup.C));
 }
コード例 #2
0
        public HexagonGroup NearestGroupTo(Vector2 position)
        {
            HexagonGroup nearest     = _groupList[0];
            float        minDistance = Vector2.Distance(nearest.GetCenter(), position);

            for (int i = 1; i < _groupList.Count; i++)
            {
                if (minDistance > Vector2.Distance(_groupList[i].GetCenter(), position))
                {
                    minDistance = Vector2.Distance(_groupList[i].GetCenter(), position);
                    nearest     = _groupList[i];
                }
            }
            return(nearest);
        }
コード例 #3
0
        private void OnTap(Vector3 pos)
        {
            if (_gameOver || _restarting || _rotating)
            {
                return;
            }
            HexagonGroup group    = HexagonGroupManager.Instance.NearestGroupTo(pos + (Vector3)HexagonManager.Instance.CenterOffset());
            float        distance = Vector3.Distance(HexagonManager.Instance.PixelToWorld(group.GetCenter()), pos);

            //checking if tapping other than grid.
            if (distance < 1f)
            {
                _selectedGroup = HexagonGroupManager.Instance.NearestGroupTo(pos + (Vector3)HexagonManager.Instance.CenterOffset());
                SetSelectedGroupToRotator();
                _anyGroupSelected = true;
            }
        }