示例#1
0
        protected override void PerformAttack()
        {
            if (QuarryPrefab == null)
            {
                QuarryPrefab = Resources.Load("Attacks/QuarryPrefab") as GameObject;
            }

            if (_net.IsClient)
            {
                networkView.RPC("PerformAttack", RPCMode.Server);
            }
            else
            {
                Projectile proj = ProjectilePool.GetProjectile(new Vector3(0, -111, 0), transform.rotation);
                proj.StartPosition        = new Vector3(0, collider.bounds.extents.y, 0);
                proj.transform.localScale = new Vector3(1.25f, 1.25f, 1.25f);
                proj.ActivePrefab         = QuarryPrefab;
                proj.PrefabSize           = new Vector3(6f, 50f, 6f);
                proj.PrefabRotation       = new Vector3(90f, transform.localEulerAngles.y, 0);
                proj.Range       = MeeleRange + 0.2f;
                proj.Speed       = 20;
                proj.StartUp     = 0.3f;
                proj.Player      = this;
                proj.Damage      = AttackDamage;
                proj.Knockback   = Vector3.zero;
                proj.Knockback   = transform.forward.normalized * 10;
                proj.Knockback.y = 7.0f;
                proj.Apply();
            }

            _clip[0].volume = ConfigManager.GetInstance().SoundLevel;
            _clip[0].Play();
            StartCoroutine(AttackDelay("Attacking"));
        }
示例#2
0
 public override void Init(Player player)
 {
     base.Init(player);
     _movementController =
         gameObject.GetOrAddComponent <TankMovementController> ();
     _projectilePool = GetComponent <ProjectilePool>();
 }
示例#3
0
    public override void Initialize(CharacterStats holder, LayerMask attackTo, Transform leftHand = null, Transform rightHand = null)
    {
        base.Initialize(holder, attackTo, leftHand, rightHand);

        projectilesPool = ProjectilePool.CreatePool(holder.transform, projectilePrefab, this);
        Debug.Log("Weapon Initialized ranged " + projectilesPool.name);
    }
示例#4
0
 private void Start()
 {
     _spriteRenderer = GetComponent <SpriteRenderer>();
     _projectilePool = FindObjectOfType <ProjectilePool>();
     _speedMax       = _speed;
     StartCoroutine(WatchOutPlayer());
 }
示例#5
0
        protected override void PerformAttack()
        {
            if (_net.IsClient)
            {
                networkView.RPC("PerformAttack", RPCMode.Server);
            }
            else
            {
                Projectile proj = ProjectilePool.GetProjectile(new Vector3(0, -111, 0), transform.rotation);
                proj.StartPosition        = new Vector3(0, collider.bounds.extents.y * 0.5f, 0);
                proj.transform.localScale = new Vector3(2, 2, 2);
                proj.Range       = MeeleRange + 0.2f;
                proj.Speed       = 15;
                proj.StartUp     = 0.3f;
                proj.Player      = this;
                proj.Damage      = AttackDamage;
                proj.Knockback   = Vector3.zero;
                proj.Knockback   = transform.forward.normalized * 15;
                proj.Knockback.y = 12.0f;
                proj.Apply();
            }

            _clip[0].volume = ConfigManager.GetInstance().SoundLevel;
            _clip[0].Play();
            StartCoroutine(AttackDelay("Attacking"));
        }
示例#6
0
    protected virtual void Awake()
    {
        m_CharacterController2D = GetComponent <CharacterController2D>();
        m_Collider       = GetComponent <Collider2D>();
        m_Animator       = GetComponent <Animator>();
        m_SpriteRenderer = GetComponent <SpriteRenderer>();
        boxCollider2D    = GetComponent <BoxCollider2D>();

        m_OriginalColor = m_SpriteRenderer.color;

        m_ContactFilter.layerMask    = trackLayerMask;
        m_ContactFilter.useLayerMask = true;
        m_ContactFilter.useTriggers  = false;

        m_ProjectilePool = new ProjectilePool[projectilePrefab.Length];
        for (int i = 0; i < projectilePrefab.Length; i++)
        {
            m_ProjectilePool[i] = ProjectilePool.GetObjectPool(projectilePrefab[i].gameObject, 8);
        }

        m_SpriteForward = spriteFaceLeft ? Vector2.left : Vector2.right;
        if (m_SpriteRenderer.flipX)
        {
            m_SpriteForward = -m_SpriteForward;
        }
    }
 /// <summary>
 /// Initialize the projectile.
 /// Set the owning projectile pool.
 /// Can only be called once.
 /// </summary>
 /// <param name="owner"></param>
 public void InitProjectile(ProjectilePool owner)
 {
     if (owningPool == null)
     {
         owningPool = owner;
     }
 }
示例#8
0
    void FixedUpdate()
    {
        Vector3    velocity        = Rb.velocity;
        float      raycastDistance = velocity.magnitude * Time.fixedDeltaTime; //De esta forma averiguo donde estaría el laser en el siguiente frame
        RaycastHit hitInfo;

        if (Physics.Raycast(transform.position, velocity.normalized, out hitInfo, raycastDistance))
        {
            //LifeManager lifeManager = hitInfo.transform.GetComponentInParent<LifeManager>();
            //if (lifeManager) lifeManager.RemoveLife();
            ShieldManager shieldManager = hitInfo.transform.GetComponentInParent <ShieldManager>();
            if (shieldManager)
            {
                shieldManager.DamageShield(Damage);
            }
            GameObject explosionPrefab = ProjectilePool.GetObjectFromPool("ProjectileExplosion");
            if (explosionPrefab)
            {
                explosionPrefab.transform.position = transform.position;
                ParticleSystem[] ps = explosionPrefab.GetComponentsInChildren <ParticleSystem>();
                for (int i = 0; i < ps.Length; ++i)
                {
                    ps[i].Play();
                }
                StartCoroutine(ReturnParticle(explosionPrefab));
            }
            Return();
        }
    }
    public void DisableDrone(Vector3 position)
    {
        GameObject electricParticle = ProjectilePool.getInstance().getPoolObject(ProjectilePool.POOL_OBJECT_TYPE.ElectricParticleEffect);

        electricParticle.gameObject.SetActive(true);
        electricParticle.gameObject.transform.position = position;
    }
示例#10
0
 protected override void Awake()
 {
     base.Awake();
     _sp             = GetComponent <UnityEngine.UI.Image>();
     _projectilePool = GameObject.Find("ProjectilePool").GetComponent <ProjectilePool>();
     _range          = GetComponent <SphereCollider>();
 }
示例#11
0
 private void Construct(ProjectilePool pool, DelayedExecutor delayedExecutor,
                        InputManager input)
 {
     _pool            = pool;
     _delayedExecutor = delayedExecutor;
     _input           = input;
 }
示例#12
0
	void Start()
	{
		// Cache necessary components.
		enemyTrans = transform;
		projPool = References.global.projectilePool;
		playerTrans = References.global.playerTrans;
	}
示例#13
0
        protected override void PerformAttack()
        {
            if (_net.IsClient)
            {
                networkView.RPC("PerformAttack", RPCMode.Server);
            }
            else
            {
                Projectile proj = ProjectilePool.GetProjectile(transform.position, transform.rotation);
                proj.StartPosition = this.transform.forward * 1.5f;
                proj.Range         = MeeleRange + 0.2f;
                proj.Speed         = 7;
                proj.Player        = this;
                proj.Damage        = AttackDamage;
                proj.Knockback     = Vector3.zero;
                proj.Knockback     = transform.forward.normalized * 15;
                proj.Knockback.y   = 15.0f;
                proj.DoPiercing    = true;
                proj.Apply();
            }

            _clip[0].volume = ConfigManager.GetInstance().SoundLevel;
            _clip[0].Play();
            StartCoroutine(AttackDelay("Attacking"));
        }
示例#14
0
        protected void PerformUpperCut()
        {
            if (MP < 50)
            {
                return;
            }

            if (_net.IsClient)
            {
                networkView.RPC("PerformUpperCut", RPCMode.Server);
            }
            else
            {
                Projectile proj = ProjectilePool.GetProjectile(ProjectilePos, transform.rotation);

                // proj.StartPosition = ProjectilePos + Vector3.up * -0.6f;
                proj.transform.localScale = new Vector3(2f, 2f, 2f);
                proj.StartPosition        = transform.forward.normalized * 1.5f;
                proj.ProjectileDirection  = new Vector3(0, 1f, 0);
                proj.Range       = MeeleRange + 2;
                proj.StartUp     = 0.25f;
                proj.Speed       = 13;
                proj.Player      = this;
                proj.Damage      = AttackDamage;
                proj.Knockback   = transform.forward.normalized * -6;
                proj.Knockback.y = 40.0f;
                proj.Apply();

                MP -= 50;

                StartCoroutine(AttackDelay("Special UpperCut"));
            }
        }
示例#15
0
        protected override void PerformAttack()
        {
            if (_net.IsClient)
            {
                networkView.RPC("PerformAttack", RPCMode.Server);
            }
            else
            {
                Projectile proj;
                proj = ProjectilePool.GetProjectile(ProjectilePos, transform.rotation);
                proj.transform.localScale = new Vector3(2f, 2f, 2f);
                proj.Range        = MeeleRange + 0.2f;
                proj.DoPiercing   = true;
                proj.Speed        = 13;
                proj.Player       = this;
                proj.Damage       = AttackDamage;
                proj.Knockback    = transform.forward.normalized * 8;
                proj.Knockback.y += 17.0f;
                proj.Apply();

                StartCoroutine(AttackDelay("Attacking"));
            }

            _clip[0].volume = ConfigManager.GetInstance().SoundLevel;
            _clip[0].Play();
        }
示例#16
0
        private void Awake()
        {
            m_CharacterController2D = GetComponent <CharacterController2D>();
            m_Collider       = GetComponent <Collider2D>();
            m_Animator       = GetComponent <Animator>();
            m_SpriteRenderer = GetComponent <SpriteRenderer>();
            boxCollider2D    = GetComponent <BoxCollider2D>();

            m_OriginalColor = m_SpriteRenderer.color;

            m_ContactFilter.layerMask    = AttackLayerMask;
            m_ContactFilter.useLayerMask = true;
            m_ContactFilter.useTriggers  = false;

            if (projectilePrefab != null)
            {
                m_ProjectilePool = ProjectilePool.GetObjectPool(projectilePrefab.gameObject, 8);
            }

            m_SpriteForward = spriteFaceLeft ? Vector2.left : Vector2.right;
            if (m_SpriteRenderer.flipX)
            {
                m_SpriteForward = -m_SpriteForward;
            }

            if (meleeDamager != null)
            {
                EndAttack();
            }
        }
示例#17
0
    // Called on startup/construction
    void Awake()
    {
        // For singleton
        if (instance == null)
        {
            DontDestroyOnLoad(gameObject);
            instance = this;
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }

        // Don't join the lobby. There is no need to join a lobby to get the list of rooms.
        PhotonNetwork.autoJoinLobby = false;
        // Don't auto sync scenes. We will manually synchronize to load scene when players are ready.
        PhotonNetwork.automaticallySyncScene = false;

        // Reduce sendrate. // Not reduced anymore
        //PhotonNetwork.sendRate = 10; // Default 20
        //PhotonNetwork.sendRateOnSerialize = 5; // Default 10

        PhotonNetwork.logLevel = Loglevel;

        projectilePool = new ProjectilePool();
    }
示例#18
0
        public static IProjectile Create(Projectile projectile, ProjectilePool pool)
        {
            IProjectile newProjectile = GameObject.Instantiate(projectile);

            newProjectile.Initialize(projectile.Data, projectile.Behavior, pool);
            return(newProjectile);
        }
示例#19
0
    public void Explode()
    {
        _target.Decrease(1);
        _target = null;
        ProjectilePool pool = ProjectilePool.GetInstance();

        pool.DestroyProjectile(this);
    }
    protected override void PlaceProjectiles()
    {
        IProjectile projectileLeft = ProjectilePool.TakeProjectile(Config.Category);
        projectileLeft.Reset(LeftPosition.position, transform.up, LayerMask.NameToLayer(Arena.PlayerProjectileLayer));
        IProjectile projectileRight = ProjectilePool.TakeProjectile(Config.Category);
        projectileRight.Reset(RightPosition.position, transform.up, LayerMask.NameToLayer(Arena.PlayerProjectileLayer));

    }
示例#21
0
    private void Awake()
    {
        gunshot    = GetComponent <AudioSource>();
        m_Pose     = GetComponentInParent <SteamVR_Behaviour_Pose>();
        m_Animator = GetComponent <Animator>();

        m_ProjectilePool = new ProjectilePool(m_ProjectilePrefab, m_MaxProjectileCount);
    }
示例#22
0
    protected virtual void getExplosionParticleEffect()
    {
        //.getBasicFireExplosionParticle();
        GameObject explosion = ProjectilePool.getInstance().getPoolObject(ProjectilePool.POOL_OBJECT_TYPE.FireEXplosionParticle);

        explosion.SetActive(true);
        explosion.transform.position = this.transform.position;
    }
    public void ReplaceProjectilePool(ProjectilePool newValue)
    {
        var index     = GameComponentsLookup.ProjectilePool;
        var component = CreateComponent <ProjectilePoolComponent>(index);

        component.value = newValue;
        ReplaceComponent(index, component);
    }
示例#24
0
    private void Awake()
    {
        // TODO SteamVR
        // pose = GetComponentInParent<Steam_Behaviour_Pose>();

        projectilePool = new ProjectilePool(prefab, maxProjectileCount);
        animator       = GetComponent <Animator> ();
    }
示例#25
0
    // Start is called before the first frame update
    void Start()
    {
        dudeRigidBody    = GetComponent <Rigidbody2D>();
        projectilePool   = GetComponent <ProjectilePool>();
        startingPosition = transform.position;

        ResetDude();
    }
示例#26
0
 void Start()
 {
     pool = GetComponent <ProjectilePool>();
     if (pool == null)
     {
         Debug.LogWarning("No pool was found!");
     }
 }
        public override void destroyCharacter()
        {
            m_ragdoll.EnableRagdoll();
            m_ragdollEnabled = true;
            GameObject explosion = ProjectilePool.getInstance().getPoolObject(ProjectilePool.POOL_OBJECT_TYPE.ElectricParticleEffect);

            explosion.SetActive(true);
            explosion.transform.position = m_headTransform.position;
        }
示例#28
0
        protected void PerformDropKick()
        {
            if (MP < 80)
            {
                return;
            }

            if (_net.IsClient)
            {
                networkView.RPC("PerformDropKick", RPCMode.Server);
            }
            else
            {
                Projectile proj = ProjectilePool.GetProjectile(ProjectilePos, transform.rotation);
                proj.transform.localScale = new Vector3(3f, 3f, 3f);
                proj.StartPosition        = transform.forward.normalized * 2f;
                proj.ProjectileDirection  = new Vector3(0, 0, 0);
                proj.Attached             = true;
                proj.Range       = MeeleRange;
                proj.Speed       = 0;
                proj.TimeToLive  = 0.55f;
                proj.Player      = this;
                proj.PlayerObj   = this.gameObject;
                proj.DoPiercing  = true;
                proj.Damage      = AttackDamage - 20;
                proj.Knockback   = transform.forward.normalized * 25;
                proj.Knockback.y = 15.0f;
                proj.Apply();
                CanMove     = true;
                IsDefending = false;

                IsAttacking = true;
                IsJumping   = true;

                IsKnockbackImmune = true;

                MP -= 80;

                animation.Play("Special DropKick");
                if (_net.IsServer)
                {
                    networkView.RPC("NetworkPlayAnimation",
                                    RPCMode.Others,
                                    "Special DropKick",
                                    -1f,
                                    false);
                }
            }

            if (IsMine())
            {
                Vector3 dir = transform.forward.normalized * 25;
                dir.y     = 15;
                Direction = dir;
                Move();
            }
        }
示例#29
0
 private void Awake()
 {
     if (instance != null)
     {
         Debug.LogWarning("More than one instance of ProjectilePool found!");
         return;
     }
     instance = this;
 }
    public void ExplosionEffect(Vector3 position)
    {
        //.getBasicDroneExplosion()
        BasicExplosion droneExplosion = ProjectilePool.getInstance().getPoolObject(ProjectilePool.POOL_OBJECT_TYPE.DroneExplosion).GetComponent <BasicExplosion>();

        droneExplosion.gameObject.SetActive(true);
        droneExplosion.gameObject.transform.position = position;
        droneExplosion.GetComponent <BasicExplosion>().exploade();
    }
	void Awake()
	{
		current = this;
	}
示例#32
0
 void Awake()
 {
     _instance = this;
 }