コード例 #1
0
    void Start()
    {
        animator    = GetComponent <Animator>();
        tilemapUtil = GameObject.FindGameObjectWithTag("GameController").GetComponent <TilemapUtil>();

        SwipeDetector.OnSwipe += OnSwipe;
    }
コード例 #2
0
    void Start()
    {
        tilemapUtil = GameObject.FindGameObjectWithTag("GameController").GetComponent <TilemapUtil>();
        animator    = GetComponent <Animator>();

        GetNextDirection();
        UpdateMovement();
    }
コード例 #3
0
        public void Execute()
        {
            // bullet and tank
            foreach (var bullet in allBullet)
            {
                if (bullet.isDestroyed)
                {
                    continue;
                }
                var bulletCamp = bullet.unit.camp;
                foreach (var tank in allPlayer)
                {
                    if (tank.isDestroyed)
                    {
                        continue;
                    }
                    if (tank.unit.camp != bulletCamp
                        )
                    {
                        if (GameCollisionUtil.CheckCollision(bullet, tank))
                        {
                            _gameAudioService.PlayClipHitTank();
                            _gameUnitService.TakeDamage(bullet, tank);
                        }
                    }
                }

                foreach (var tank in allEnmey)
                {
                    if (tank.isDestroyed)
                    {
                        continue;
                    }
                    if (tank.unit.camp != bulletCamp && GameCollisionUtil.CheckCollision(bullet, tank))
                    {
                        _gameAudioService.PlayClipHitTank();
                        _gameUnitService.TakeDamage(bullet, tank);
                    }
                }
            }

            // bullet and camp
            foreach (var camp in allCamp)
            {
                foreach (var bullet in allBullet)
                {
                    if (bullet.isDestroyed)
                    {
                        continue;
                    }
                    if (camp.isDestroyed)
                    {
                        continue;
                    }
                    if (GameCollisionUtil.CheckCollision(bullet, camp))
                    {
                        _gameAudioService.PlayClipHitTank();
                        _gameUnitService.TakeDamage(bullet, camp);
                    }
                }
            }

            HashSet <LVector2Int> tempPoss = new HashSet <LVector2Int>();

            // bullet and map
            foreach (var bullet in allBullet)
            {
                if (bullet.isDestroyed)
                {
                    continue;
                }
                var      pos        = bullet.pos.value;
                LVector2 borderDir  = DirUtil.GetBorderDir(bullet.dir.value);
                var      borderPos1 = pos + borderDir * bullet.collider.radius;
                var      borderPos2 = pos - borderDir * bullet.collider.radius;
                tempPoss.Add(pos.Floor());
                tempPoss.Add(borderPos1.Floor());
                tempPoss.Add(borderPos2.Floor());
                foreach (var iPos in tempPoss)
                {
                    TilemapUtil.CheckBulletWithMap(iPos, bullet, _gameAudioService, _map2DService);
                }

                if (bullet.unit.health == 0)
                {
                    bullet.isDestroyed = true;
                }

                tempPoss.Clear();
            }

            var min = _gameConstStateService.MapMin;
            var max = _gameConstStateService.MapMax;

            // bullet bound detected
            foreach (var bullet in allBullet)
            {
                if (_gameCollisionService.IsOutOfBound(bullet.pos.value, min, max))
                {
                    bullet.isDestroyed = true;
                }
            }

            // tank  and item
            //var players = allPlayer.ToArray(); //item may modified the allPlayer list so copy it
            foreach (var player in allPlayer)
            {
                if (player.isDestroyed)
                {
                    continue;
                }
                foreach (var item in allItem)
                {
                    if (item.isDestroyed)
                    {
                        continue;
                    }
                    if (GameCollisionUtil.CheckCollision(player, item))
                    {
                        _gameAudioService.PlayMusicGetItem();
                        item.itemType.killerActorId = player.actorId.value;
                        item.isDestroyed            = true;
                    }
                }
            }
        }