コード例 #1
0
        public static EnemyShuriken Create(Enemy enemySpawner, Vector3 spawnPosition, Vector3 moveDir)
        {
            Transform enemyShurikenTransform = null;// Instantiate(GameAssets.i.pfEnemyShuriken, spawnPosition, Quaternion.identity);

            EnemyShuriken enemyShuriken = enemyShurikenTransform.GetComponent <EnemyShuriken>();

            enemyShuriken.Setup(enemySpawner, moveDir);

            return(enemyShuriken);
        }
コード例 #2
0
        private void Update()
        {
            switch (state)
            {
            case State.Normal:
                enemyTarget = enemyMain.EnemyTargeting.GetActiveTarget();
                if (enemyTarget != null)
                {
                    Vector3 targetPosition = enemyTarget.GetPosition();
                    enemyMain.EnemyPathfindingMovement.MoveToTimer(targetPosition);
                    float attackDistance = 80f;
                    float targetDistance = Vector3.Distance(GetPosition(), targetPosition);
                    if (targetDistance < attackDistance)
                    {
                        // Target within attack distance
                        //int layerMask = ~(1 << GameAssets.i.enemyLayer | 1 << GameAssets.i.ignoreRaycastLayer | 1 << GameAssets.i.shieldLayer);
                        int          layerMask    = ~0;
                        RaycastHit2D raycastHit2D = Physics2D.Raycast(GetPosition(), (targetPosition - GetPosition()).normalized, targetDistance, layerMask);
                        if (raycastHit2D.collider != null && raycastHit2D.collider.GetComponent <Player>())
                        {
                            // Player in line of sight
                            enemyMain.EnemyPathfindingMovement.Disable();
                            SetStateAttacking();
                            Vector3 targetDir = (targetPosition - GetPosition()).normalized;
                            characterBase.PlayPunchAnimation(targetDir, (Vector3 hitPosition) => {
                                // Throw rock
                                enemyTarget = enemyMain.EnemyTargeting.GetActiveTarget();
                                if (enemyTarget != null)
                                {
                                    Vector3 throwDir            = (enemyTarget.GetPosition() - hitPosition).normalized;
                                    EnemyShuriken enemyShuriken = EnemyShuriken.Create(enemyMain.Enemy, hitPosition, throwDir);
                                }
                                //CMDebug.TextPopup("#", hitPosition);
                            }, () => {
                                // Punch complete
                                enemyMain.EnemyPathfindingMovement.Enable();
                                SetStateNormal();
                            });
                        }
                    }
                }
                break;

            case State.Attacking:
                break;

            case State.Busy:
                break;
            }
        }