示例#1
0
    public static EnemyShuriken Create(Enemy enemySpawner, Vector3 spawnPosition, Vector3 moveDir)
    {
        Transform enemyShurikenTransform = 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);
                    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;
        }
    }