Exemplo n.º 1
0
    protected void FireAtPlayer()
    {
        if (InvaderManager.I.PlayerObject.GetCurrentHealth > 0 && lastFire < Time.time)
        {
            ParticleSystem.EmitParams eparam = new ParticleSystem.EmitParams();

            float accuracy = AccuracyBasedOnDifficulty.Evaluate(InvaderManager.GetDifficulty());

            Vector2 tVel = InvaderManager.I.PlayerObject.GetVelocity / Time.deltaTime;

            float tMagn = tVel.magnitude;
            float delta = tMagn / ProjectileSpeed;

            Vector2 desPoint = InvaderManager.I.PlayerObject.transform.position;
            desPoint += (tVel * delta);
            desPoint += Random.insideUnitCircle * (1f - accuracy) * AccuracyDistance;

            Vector2 dir = desPoint - new Vector2(transform.position.x, transform.position.y);
            Debug.DrawRay(desPoint, dir, Color.green, 1f);

            eparam.velocity = dir.normalized * ProjectileSpeed;
            eparam.position = transform.position;

            ParticleSystem.Emit(eparam, 1);
            lastFire = Time.time + MinFireInterval + Random.Range(0f, 2f);
        }
    }
Exemplo n.º 2
0
    protected bool Aggro()
    {
        float dist = 0f;

        if (!GoHostile(out dist))
        {
            return(false);
        }
        else
        {
            Vector2 tVel = InvaderManager.I.PlayerObject.GetVelocity / Time.deltaTime;

            float   mySpeed  = SpeedBasedOnDifficulty.Evaluate(InvaderManager.GetDifficulty());
            float   tMagn    = tVel.magnitude;
            float   delta    = tMagn / mySpeed;
            Vector2 desPoint = InvaderManager.I.PlayerObject.transform.position;
            desPoint += (tVel * delta);

            transform.position = Vector2.MoveTowards(transform.position, desPoint, mySpeed * Time.deltaTime);

            FireAtPlayer();

            return(true);
        }
    }
Exemplo n.º 3
0
 //==========================================================================
 //コンポーネント参照
 private void CRef()
 {
     soundManagerSE = GameObject.Find("Manager/SoundManagerSE").GetComponent <SoundManager>();
     invaderManager = GameObject.Find("Manager/InvaderManager").GetComponent <InvaderManager>();
     spriteRenderer = GetComponent <SpriteRenderer>();
     scoreManager   = GameObject.Find("Manager/ScoreManager").GetComponent <ScoreManager>();
 }
Exemplo n.º 4
0
 //==========================================================================
 //コンポーネント参照
 private void CRef()
 {
     spriteRenderer = GetComponent <SpriteRenderer>();
     boxCollider2D  = GetComponent <BoxCollider2D>();
     invaderManager = GameObject.Find("InvaderManager").GetComponent <InvaderManager>();
     scoreManager   = GameObject.Find("ScoreManager").GetComponent <ScoreManager>();
     soundManagerSE = GameObject.Find("Manager/SoundManagerSE").GetComponent <SoundManager>();
     ship           = GameObject.Find("Ship").GetComponent <Ship>();
 }
Exemplo n.º 5
0
 void Awake()
 {
     if (_instance == null)
     {
         _instance = this;
     }
     else
     {
         Destroy(this);
     }
 }
Exemplo n.º 6
0
 private void Update()
 {
     if (!leaving && !InvaderManager.IsInsideBounds(new Vector2(transform.position.x, transform.position.y)))
     {
         if (stateMachine != null)
         {
             StopCoroutine(stateMachine);
         }
         StartCoroutine(LeaveZone());
     }
 }
Exemplo n.º 7
0
    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(gameObject);
        }

        else
        {
            _instance = this;
        }
    }
Exemplo n.º 8
0
    protected bool GoHostile(out float dist)
    {
        float difficulty = InvaderManager.GetDifficulty();

        dist = Vector2.Distance(InvaderManager.I.PlayerObject.transform.position, transform.position);
        float aggroDist = AggroBasedOnDifficulty.Evaluate(difficulty);

        if (InvaderManager.I.PlayerObject.GetCurrentHealth <= 0)
        {
            return(false);
        }

        return(dist < aggroDist);
    }
Exemplo n.º 9
0
    public override void ResetObject()
    {
        base.ResetObject();

        this.ParticleSystem.transform.SetParent(transform, false);
        this.ParticleSystem.transform.position = Vector3.zero;
        leaving             = false;
        myCollision.enabled = false;

        InvaderManager.RegisterNewInvader(this);

        if (stateMachine != null)
        {
            StopCoroutine(stateMachine);
        }

        stateMachine = StartCoroutine(stateUpdate());
    }
Exemplo n.º 10
0
    protected void Roam()
    {
        if (Time.time > nextRoamUpdate)
        {
            float xBias = InvaderManager.I.PlayerObject.transform.position.x - transform.position.x;

            xBias = Mathf.Clamp(xBias, -1f, 1f) * 0.4f;

            Vector2 dir = (Vector2.right * xBias) + Random.insideUnitCircle;
            dir.y         *= 0.3f; // More horizontal movement
            roamDir        = dir.normalized;
            roamSpeed      = SpeedBasedOnDifficulty.Evaluate(InvaderManager.GetDifficulty()) * Random.Range(0.5f, 1f);
            nextRoamUpdate = Time.time + Random.Range(0.5f, 4f);
        }

        if (FireDistance > Vector3.Distance(InvaderManager.I.PlayerObject.transform.position, transform.position))
        {
            FireAtPlayer();
        }

        curRoamDir         = Vector3.RotateTowards(curRoamDir, roamDir, 2f * Time.deltaTime, 4f * Time.deltaTime);
        transform.position = Vector2.MoveTowards(transform.position, new Vector2(transform.position.x, transform.position.y) + curRoamDir, roamSpeed * Time.deltaTime);
    }
Exemplo n.º 11
0
 protected void OnCreate()
 {
     invaderManager = GameObject.Find("InvaderManager").GetComponent <InvaderManager>();
 }
Exemplo n.º 12
0
    // Use this for initialization
    void Start()
    {
        minX = Camera.main.ScreenToWorldPoint(new Vector3(0, 0, 0)).x;
        maxX = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, 0, 0)).x;

        renderer = GetComponent<SpriteRenderer>();
        spriteColorR = 255;
        spriteColorG = 255;
        spriteColorB = 255;

        transform.position = new Vector3(transform.position.x, transform.position.y, 0);
        nextPosition = transform.position;
        spawnManager = SpawnManager.instance;
        invaderManager = InvaderManager.instance;
    }
Exemplo n.º 13
0
 //==========================================================================
 //コンポーネント参照
 private void CRef()
 {
     score_Canv     = GameObject.Find("Canvas/Score");
     time_Canv      = GameObject.Find("Canvas/Time");
     invaderManager = GameObject.Find("InvaderManager").GetComponent <InvaderManager>();
 }
Exemplo n.º 14
0
 private void Awake()
 {
     I        = this;
     invaders = new List <Invader>();
 }
Exemplo n.º 15
0
 //==========================================================================
 //コンポーネント参照
 private void CRef()
 {
     image          = GetComponent <Image>();
     text           = transform.Find("Text").GetComponent <Text>();
     invaderManager = GameObject.Find("Manager/InvaderManager").GetComponent <InvaderManager>();
 }
Exemplo n.º 16
0
 void Awake()
 {
     instance = this;
 }
Exemplo n.º 17
0
 private void OnDisable()
 {
     InvaderManager.RemoveInvader(this);
 }