Inheritance: MonoBehaviour
    void AttackPlayer()
    {
        // Old code - to be removed...
        // GameObject o = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        // o.transform.position = transform.position;
        // o.GetComponent<Renderer>().material.SetColor("_Color", Color.red);
        // o.transform.LookAt(target.transform);
        // o.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
        // o.transform.parent = transform;
        // Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false);
        // dmg = stats.RealDamage(dmg);
        // ProjectileController pb = o.AddComponent<ProjectileController>();
        // pb.dmg = dmg;
        // pb.speed = 10f;
        // pb.ttl = 5f;
        // o.GetComponent<SphereCollider>().isTrigger = true;
        // Rigidbody rb = o.AddComponent<Rigidbody>();
        // rb.useGravity = false;
        // rb.isKinematic = true;

        // Generates projectiles
        var             projectileInstance = Instantiate(projectile, transform.position, transform.rotation);
        ProjectileMover pm = projectileInstance.GetComponent <ProjectileMover>();

        projectileInstance.GetComponent <SphereCollider>().isTrigger = true;
        projectileInstance.transform.parent = transform;

        Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false);

        dmg    = stats.RealDamage(dmg);
        pm.dmg = dmg;
    }
Exemple #2
0
    internal void Initialize(Projectile projectile)
    {
        Element[] projectileElements = projectile.elements.ToArray();
        damage              = ElementUtility.ProjectileDamage(projectileElements);
        bouncesLeft         = ElementUtility.Bounces(projectileElements);
        chainLength         = ElementUtility.ChainLength(projectileElements);
        speed               = ElementUtility.ProjectileSpeed(projectileElements);
        AOEDamageDealer     = new AOEDamageDealer(ElementUtility.AoE(projectileElements) * projectile.areaOfEffectMultiplier, transform, projectile.elements);
        primaryMovementType = ElementUtility.Movement(projectile.elements.Peek());
        this.projectile     = projectile;
        switch (primaryMovementType)
        {
        case ProjectileMovementType.BounceOnGround:
            Parabola[] parabolas = ParabolaCalculator.CalculateFullTrajectory(transform.position, projectile.target.position,
                                                                              ElementUtility.ProjectileSpeed(projectileElements), transform.position.y, 0, bouncesLeft);
            projectileMover = new ProjectileMover(transform, parabolas, ElementUtility.ProjectileSpeed(projectile.elements.ToArray()) * projectile.speedMultiplier);
            break;

        case ProjectileMovementType.StraightChain:
            projectileMover = new ProjectileMover(transform, projectile.target, ElementUtility.ProjectileSpeed(projectile.elements.ToArray()) * projectile.speedMultiplier);
            break;

        case ProjectileMovementType.AOEAtTower:
            projectileMover = new ProjectileMover(projectile.speedMultiplier * speed, 0, transform);
            OnAOEAtTowerActivation();
            break;
        }
    }
    // Update is called once per frame
    void FixedUpdate()
    {
        // Distance of enemy from player
        float distance = Vector3.Distance(this.transform.position, playerTransform.transform.position);

        if (distance < minChallengeDistance)
        {
            challenged = true;
        }
        else if (distance > maxChallengeDistance)
        {
            challenged = false;
        }

        // Actions when enemy is challenged
        if (challenged)
        {
            directionOfPlayer = (playerTransform.position - this.transform.position).normalized;        // Get direction to move towards

            this.transform.Translate(directionOfPlayer * speed * Time.deltaTime, Space.World);          // Move enemey to player
            this.transform.LookAt(playerTransform, worldUp);                                            // Points torwards Player


            // Firing rate
            timer -= Time.deltaTime;
            // Always shooting
            if (true)
            {
                if (timer <= 0)
                {
                    Vector3 thisDirection = this.transform.rotation * Vector3.forward;

                    // Initial position for the projectile
                    Vector3 intialPosition = this.transform.position + thisDirection;

                    // Instantiate bullet with intialPosition and random rotation
                    GameObject bulletObject = (GameObject)Instantiate(bullet, intialPosition, Random.rotation);

                    // Get the script
                    ProjectileMover projectileMover = (ProjectileMover)bulletObject.transform.GetComponent("ProjectileMover");

                    // Set origin of the projectile
                    projectileMover.setOrigin(this.gameObject);

                    projectileMover.fire();

                    // Reset
                    timer = firingRate;
                }
            }
        }
        else if (!challenged)
        {
            // Random idle animations
        }
    }
Exemple #4
0
    // Update is called once per frame
    void Update()
    {
        float currSpeed = speed * Time.deltaTime;               // Current Speed

        float xInput = Input.GetAxis("Horizontal");             // Inputs
        float yInput = Input.GetAxis("Vertical");

        Vector3 mousePosition = Input.mousePosition;

        playerMover.velocity = new Vector2(xInput * currSpeed, yInput * currSpeed);             // Velocity

        // Mouse position
        Vector3 pos = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, 10));

        this.transform.LookAt(pos, worldUp);

        // When either xInput or yInput isn't 0, recalculate rotation
        if (xInput != 0 || yInput != 0)
        {
            playerMover.rotation = Mathf.Atan2(xInput, yInput) * -180 / Mathf.PI;                       // Rotation
        }

        //Press space to activate/deactivate upgrades
        if (Input.GetButton("Jump"))
        {
            PeaShooterBehavior.upgradeDamage = !PeaShooterBehavior.upgradeDamage;
            PeaShooterBehavior.upgradeSpeed  = !PeaShooterBehavior.upgradeSpeed;
        }

        // Firing rate
        timer -= Time.deltaTime;
        if (Input.GetButton("Fire1"))
        {
            if (timer <= 0)
            {
                Vector3 thisDirection = this.transform.rotation * Vector3.forward;

                // Initial position for the projectile
                Vector3 intialPosition = this.transform.position + thisDirection;

                // Instantiate bullet with intialPosition and random rotation
                GameObject bulletObject = (GameObject)Instantiate(bullet, intialPosition, Random.rotation);

                // Get the script
                ProjectileMover projectileMover = (ProjectileMover)bulletObject.transform.GetComponent("ProjectileMover");

                // Set origin of the projectile
                projectileMover.setOrigin(this.gameObject);

                projectileMover.fire();

                // Reset
                timer = firingRate;
            }
        }
    }
    IEnumerator ShootBulletCoroutine(float delay)
    {
        GameObject      newProjectile = Instantiate(PlayerProjectile, transform.position, Quaternion.identity);
        ProjectileMover mover         = newProjectile.GetComponent <ProjectileMover>();

        mover.MovingDirection = new Vector2(0, 1);



        CanShoot = false;
        yield return(new WaitForSeconds(delay));

        CanShoot = true;
    }
Exemple #6
0
    void fireMeme()
    {
        Vector2 firePos = getPointAlongHitbox();//new Vector2(transform.position.x, getPointAlongHitbox().y);

        GameObject newMeme = Instantiate(memePrefab, transform.parent);

        newMeme.transform.rotation = transform.rotation;

        ProjectileMover newMover = newMeme.AddComponent <ProjectileMover>();

        float angleOfElevation = transform.rotation.eulerAngles.z;

        newMover.init(firePos, fireSpeed, projectileGravity, angleOfElevation);
    }
Exemple #7
0
    public virtual bool onCatch(MemeCatcher _catcher)
    {
        if (_catcher.heldMemes.Count >= _catcher.memeLimit)
        {
            return(true);
        }

        ProjectileMover mover = GetComponent <ProjectileMover>();

        if (mover != null)
        {
            Destroy(mover);
        }

        return(true);
    }
Exemple #8
0
        private void SetupEntityBullet()
        {
            var collider = entity.addComponent <CircleCollider>();

            collider.radius = 2f;
            _collider       = collider;

            _mover = _bullet.addComponent(new ProjectileMover());

            Flags.setFlagExclusive(ref _collider.collidesWithLayers, Layers.MapObstacles);
            Flags.setFlag(ref _collider.collidesWithLayers, Layers.Player);
            Flags.setFlagExclusive(ref _collider.physicsLayer, Layers.Bullet);

            // Hack to avoid moving without collider and causing nullreference

            _collider.onAddedToEntity();
            _mover.onAddedToEntity();
        }
Exemple #9
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.layer == LayerMask.NameToLayer("PlayerProjectile"))
        {
            ProjectileMover mover = collision.GetComponent <ProjectileMover>();

            // 만약 충돌 대상 총알이 다른 오브젝트와 충돌한 적이 없다면?
            if (!mover.isCollisioned)
            {
                mover.SwitchCollisioned(true);



                // 총알 파티클 비활성화
                Transform particle = collision.transform.FindChild("Particle System");
                if (particle)
                {
                    particle.parent = null;
                }



                if (particle_on_Destroy)
                {
                    GameObject new_particle = Instantiate(particle_on_Destroy, transform.position, transform.rotation);
                }

                Destroy(collision.gameObject);

                HP--;

                if (HP <= 0)
                {
                    Destroy(gameObject);
                }
            }
        }
    }
Exemple #10
0
    void ApplyMouseInput()
    {
        Vector3 pos = Input.mousePosition;

        pos.z = 10;
        cursor.transform.position = Camera.main.ScreenToWorldPoint(pos);
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("Ready...");
            nextKnifeVelocity = 8.0f;
        }
        else if (Input.GetMouseButtonUp(0))
        {
            Debug.Log(nextKnifeVelocity.ToString());
            GameObject      newKnife    = Instantiate(knife, transform.position + knifeOffset, Quaternion.identity);
            ProjectileMover knifeScript = newKnife.GetComponent <ProjectileMover>();
            Vector2         knifeVector = new Vector2((cursor.transform.position.x - this.transform.position.x), (cursor.transform.position.y - this.transform.position.y));
            knifeVector          = knifeVector.normalized * nextKnifeVelocity;
            knifeScript.velocity = knifeVector;
        }
        else if (Input.GetMouseButton(0))
        {
            nextKnifeVelocity = Mathf.MoveTowards(nextKnifeVelocity, knifeVelocity, knifeAcceleration * Time.unscaledDeltaTime);
            Vector2 knifeVector = new Vector2((cursor.transform.position.x - this.transform.position.x), (cursor.transform.position.y - this.transform.position.y));
            knifeVector = knifeVector.normalized * nextKnifeVelocity;
            larc.RenderArc(knifeVector);
        }

        if (Input.GetMouseButtonDown(1))
        {
            Time.timeScale = .1f;
        }
        else if (Input.GetMouseButtonUp(1))
        {
            Time.timeScale = 1.0f;
        }
    }
Exemple #11
0
        public override void OnAddedToEntity()
        {
            Velocity = new Vector2(100, 0);

            _mover = Entity.GetComponent <ProjectileMover>();
        }
Exemple #12
0
 public override void onAddedToEntity()
 {
     _mover = entity.getComponent <ProjectileMover>();
 }
 public override void OnAddedToEntity()
 {
     mover = Entity.GetComponent <ProjectileMover>();
 }
Exemple #14
0
 public override void OnAddedToEntity()
 {
     _pmover = Entity.AddComponent(new ProjectileMover());
 }