コード例 #1
0
ファイル: PlayerShoot.cs プロジェクト: merc37/TBDB
        void Update()
        {
            if (PlayerInput.GetButton("Fire"))
            {
                if (eventManager != null)
                {
                    Vector2 target = Camera.main.ScreenToWorldPoint(Input.mousePosition).ToVector2();
                    if (Vector2.Distance(rigidbody.position, target) < mouseMinDistance)
                    {
                        target = (rigidbody.rotation.ToVector2() * mouseMinDistance) + rigidbody.position;
                    }
                    eventManager.TriggerEvent(GunEvents.OnShoot, new ParamsObject(target));
                }
            }

            if (PlayerInput.GetButtonUp("Fire"))
            {
                if (eventManager != null)
                {
                    eventManager.TriggerEvent(PlayerEvents.OnUnlockShoot);
                }
            }

            if (PlayerInput.GetButtonDown("Reload"))
            {
                if (eventManager != null)
                {
                    eventManager.TriggerEvent(GunEvents.OnReload);
                }
            }
        }
コード例 #2
0
ファイル: ChasePlayerTasks.cs プロジェクト: merc37/TBDB
        bool SetMovementTargetToPlayerPosition()
        {
            eventManager.TriggerEvent(EnemyEvents.OnSetMovementTarget, new ParamsObject(playerRigidbody.position));
            //if (Input.GetMouseButtonDown(2)) {

            //    //RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction, Mathf.Infinity, LayerMask.NameToLayer("Default"));
            //    Vector2 mousePos = Input.mousePosition;
            //    Vector2 pos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, Camera.main.nearClipPlane));
            //    eventManager.TriggerEvent(EnemyEvents.OnSetMovementTarget, new ParamsObject(pos));
            //    return true;
            //}
            return(true);
        }
コード例 #3
0
        public void SwapPlayerAbility(int indexOne, int indexTwo)
        {
            Transform indexOneTransform = transform.GetChild(indexOne);
            Transform indexTwoTransform = transform.GetChild(indexTwo);

            if (Mathf.Abs(indexOne - indexTwo) > 1)
            {
                transform.GetChild(indexTwo).SetSiblingIndex(indexOne);
            }
            indexOneTransform.SetSiblingIndex(indexTwo);

            uiStatusPanels.SetPlayerAbility(indexOneTransform.GetSiblingIndex(), indexOneTransform.GetComponent <PlayerAbility>());
            uiStatusPanels.SetPlayerAbility(indexTwoTransform.GetSiblingIndex(), indexTwoTransform.GetComponent <PlayerAbility>());

            eventManager.TriggerEvent($"OnUpdateAbility{indexOneTransform.GetSiblingIndex()}", new ParamsObject(indexOneTransform.GetComponent <PlayerAbility>()));
            eventManager.TriggerEvent($"OnUpdateAbility{indexTwoTransform.GetSiblingIndex()}", new ParamsObject(indexTwoTransform.GetComponent <PlayerAbility>()));
        }
コード例 #4
0
ファイル: StrafeTasks.cs プロジェクト: merc37/TBDB
        bool SetMovementTargetToStrafePoint()
        {
            float   angle     = Random.Range(0, Mathf.PI * 2);
            Vector2 strafePos = strafeCenter + new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * strafePointDistance;

            eventManager.TriggerEvent(EnemyEvents.OnSetMovementTarget, new ParamsObject(strafePos));

            return(true);
        }
コード例 #5
0
ファイル: RollOnCollision.cs プロジェクト: merc37/TBDB
        void OnTriggerEnter2D(Collider2D coll)
        {
            DamageSource damageSource = coll.GetComponent <DamageSource>();

            if (damageSource)
            {
                if (damageTags.Contains(damageSource.Source))
                {
                    eventManager.TriggerEvent(EnemyEvents.OnRoll, new ParamsObject(coll.attachedRigidbody.velocity));
                }
            }
        }
コード例 #6
0
ファイル: SearchTasks.cs プロジェクト: merc37/TBDB
        bool SetMovementTargetToSearchPointAroundSearchCenter()
        {
            List <PathfindingNode>    possibleSearchNodes = new List <PathfindingNode>();
            List <PathfindingNode>    neighborsToCheck    = new List <PathfindingNode>();
            HashSet <PathfindingNode> neighborsChecked    = new HashSet <PathfindingNode>();
            PathfindingNode           searchCenterNode    = grid.NodeAtWorldPosition(searchCenter);
            float searchRadius = this.searchRadius;

            if (Vector2.Distance(searchCenter, searchCenterNode.WorldPosition) > grid.GridScale)
            {
                searchCenter = searchCenterNode.WorldPosition;
                searchRadius = Vector2.Distance(searchCenter, rigidbody.position);
            }
            neighborsToCheck.Add(searchCenterNode);
            PathfindingNode neighborToCheck;

            while (neighborsToCheck.Count > 0)
            {
                neighborToCheck = neighborsToCheck[0];
                neighborsToCheck.RemoveAt(0);
                foreach (PathfindingNode neighbor in grid.GetNeighbors(neighborToCheck))
                {
                    if (!neighborsChecked.Contains(neighbor))
                    {
                        if (Vector2.Distance(searchCenter, neighbor.WorldPosition) <= searchRadius)
                        {
                            neighborsToCheck.Add(neighbor);
                            if (neighbor.IsWalkable)
                            {
                                possibleSearchNodes.Add(neighbor);
                            }
                        }
                        neighborsChecked.Add(neighbor);
                    }
                }
            }

            if (possibleSearchNodes.Count <= 0)
            {
                return(false);
            }

            PathfindingNode searchNode = possibleSearchNodes[Random.Range(0, possibleSearchNodes.Count - 1)];

            eventManager.TriggerEvent(EnemyEvents.OnSetMovementTarget, new ParamsObject(searchNode.WorldPosition));
            return(true);
        }
コード例 #7
0
        void Update()
        {
            if (roll)
            {
                RaycastHit2D posDir = Physics2D.Raycast(rigidbody.position, rollDirection.normalized, rollDistance, movementBlockMask);
                RaycastHit2D negDir = Physics2D.Raycast(rigidbody.position, -rollDirection.normalized, rollDistance, movementBlockMask);
                if (!posDir && !negDir)
                {
                    if (Random.value > .5f)
                    {
                        rollDirection = -rollDirection;
                    }
                }
                if (posDir && negDir)
                {
                    if (negDir.distance > posDir.distance)
                    {
                        rollDirection = -rollDirection;
                    }
                    if (negDir.distance == posDir.distance)
                    {
                        if (Random.value > .5f)
                        {
                            rollDirection = -rollDirection;
                        }
                    }
                }
                if (posDir && !negDir)
                {
                    rollDirection = -rollDirection;
                }

                rollStartPos                 = rigidbody.position;
                rigidbody.velocity           = rollDirection.normalized * movementSpeed * 3;
                rollVelocity                 = rigidbody.velocity;
                shouldRollAwayFromProjectile = false;
                roll = false;
                eventManager.TriggerEvent(EnemyEvents.OnRollStart);
                rolling = true;
            }

            if (rollOnCooldown && !rolling)
            {
                rollCooldownTimer -= Time.deltaTime;
                if (rollCooldownTimer <= 0)
                {
                    rollCooldownTimer = rollCooldownTime;
                    eventManager.TriggerEvent(EnemyEvents.OnRollCooldownEnd);
                    rollOnCooldown = false;
                }
            }

            if (!rollOnCooldown && rolling)
            {
                if (Vector2.Distance(rollStartPos, rigidbody.position) >= rollDistance)
                {
                    rigidbody.velocity = Vector2.zero;
                    eventManager.TriggerEvent(EnemyEvents.OnRollEnd);
                    rolling = false;
                    eventManager.TriggerEvent(EnemyEvents.OnRollCooldownStart);
                    rollOnCooldown = true;
                }
                if (!rollVelocity.Equals(rigidbody.velocity))
                {
                    eventManager.TriggerEvent(EnemyEvents.OnRollEnd);
                    rolling = false;
                    eventManager.TriggerEvent(EnemyEvents.OnRollCooldownStart);
                    rollOnCooldown = true;
                }
            }
        }
コード例 #8
0
ファイル: MovementTasks.cs プロジェクト: merc37/TBDB
 void Start()
 {
     eventManager.TriggerEvent(EnemyEvents.OnSendMovementSpeed, new ParamsObject(maxRunSpeed));
 }
コード例 #9
0
 void OnCollisionEnter2D(Collision2D coll)
 {
     eventManager.TriggerEvent(PlayerEvents.OnReturnGun);
 }
コード例 #10
0
ファイル: SightTasks.cs プロジェクト: merc37/TBDB
 void Start()
 {
     eventManager.TriggerEvent(EnemyEvents.OnSendSightAngle, new ParamsObject(sightAngle));
     eventManager.TriggerEvent(EnemyEvents.OnSendSightDistance, new ParamsObject(sightDistance));
     eventManager.TriggerEvent(EnemyEvents.OnSendSightBlockMask, new ParamsObject(sightBlockMask));
 }
コード例 #11
0
 bool Shoot()
 {
     eventManager.TriggerEvent(GunEvents.OnShoot, new ParamsObject(aimTarget));
     return(true);
 }
コード例 #12
0
 bool SetMovementTargetToCoverTarget()
 {
     eventManager.TriggerEvent(EnemyEvents.OnSetMovementTarget, new ParamsObject(coverTarget));
     return(true);
 }
コード例 #13
0
ファイル: DamageOnCollision.cs プロジェクト: merc37/TBDB
 protected override bool OnCollisionEnterAction(Collision2D coll)
 {
     eventManager.TriggerEvent(HealthEvents.OnDecreaseHealth, new ParamsObject(coll.gameObject.GetComponent <DamageSource>().Damage));
     return(true);
 }
コード例 #14
0
 void Start()
 {
     eventManager.TriggerEvent(GunEvents.OnUpdateMaxAmmo, new ParamsObject(MaxAmmo));
     eventManager.TriggerEvent(GunEvents.OnUpdateCurrentAmmo, new ParamsObject(CurrentAmmo));
     eventManager.TriggerEvent(GunEvents.OnUpdateGunProjectileSpeed, new ParamsObject(projectileSpeed));
     eventManager.TriggerEvent(GunEvents.OnUpdateGunDamage, new ParamsObject(damage));
     eventManager.TriggerEvent(GunEvents.OnUpdateGunTransform, new ParamsObject(transform));
     eventManager.TriggerEvent(GunEvents.OnUpdateGunFireType, new ParamsObject(automatic));
     eventManager.TriggerEvent(GunEvents.OnUpdateGunProjectile, new ParamsObject(projectileToBeFired));
     eventManager.TriggerEvent(GunEvents.OnUnlockFire);
 }
コード例 #15
0
 private bool SetPlayerLastKnownPositionToNoiseLocation()
 {
     eventManager.TriggerEvent(EnemyEvents.OnSetPlayerLastKnownLocation, new ParamsObject(noiseLocation));
     return(true);
 }
コード例 #16
0
 void Start()
 {
     eventManager.TriggerEvent(HealthEvents.OnUpdateMaxHealth, new ParamsObject(MaxAmount));
     eventManager.TriggerEvent(HealthEvents.OnUpdateCurrentHealth, new ParamsObject(CurrentAmount));
 }