예제 #1
0
        public override void Update(float gameTime, Map map, ParticleManager pMan, Character[] c)
        {
            if (HitManager.CheckHit(this, c, pMan))
            {
                frame = 0f;
            }

            Trajectory.Y = (float)Math.Sin((double)frame * 13.0) * 150f;

            if (map.CheckParticleCol(Location))
            {
                this.frame = 0f;
                pMan.MakeExplosion(Location, 1f);
            }

            pMan.AddParticle(new Fire(Location, -Trajectory / 8f,
                                      .5f, Rand.GetRandomInt(0, 4)));
            pMan.AddParticle(new Smoke(Location,
                                       Rand.GetRandomVector2(-20f, 20f, -50f, 10f)
                                       - Trajectory / 10f,
                                       1f, .8f, .6f, 1f, .5f,
                                       Rand.GetRandomInt(0, 4)));
            pMan.AddParticle(new Heat(Location,
                                      Rand.GetRandomVector2(-20f, 20f, -50f, -10f),
                                      Rand.GetRandomFloat(.5f, 2f)));

            base.Update(gameTime, map, pMan, c);
        }
예제 #2
0
    // Start is called before the first frame update
    void Awake()
    {
        targeting      = false;
        targetingRange = 4;

        facing = new Vector2(0, -1);
        dead   = false;

        rb = gameObject.AddComponent <Rigidbody2D>();
        rb.freezeRotation = true;
        rb.gravityScale   = 0;

        collider = gameObject.AddComponent <BoxCollider2D>();

        sr        = gameObject.AddComponent <SpriteRenderer>();
        sprite    = Resources.Load <Sprite>("Enemy");
        sr.sprite = sprite;

        HitManager man = GameObject.Find("[HitManager]").GetComponent <HitManager>();

        man.AddEnemy(this.gameObject);

        hb       = gameObject.GetComponent <HealthBar>();
        weapon   = this.gameObject.AddComponent <Weapon>();
        weapon2  = this.gameObject.AddComponent <Weapon>();
        modifier = 1.0f + Random.Range(-levelNum / 5.0f, levelNum / 5.0f);
    }
예제 #3
0
    private void OnCheckAtlas()
    {
        _selectHit        = null;
        _selectSpriteName = "";
        HitManager.Clear();

        List <Object> prefabList = GetPrefabs();

        foreach (Object obj in prefabList)
        {
            GameObject      go      = obj as GameObject;
            List <UISprite> sprites = PrefabSpriteManager.GetAllSprite(go);
            foreach (UISprite sprite in sprites)
            {
                if (sprite.atlas != _targetAtlas)
                {
                    continue;
                }
                foreach (UISpriteData data in _targetAtlas.spriteList)
                {
                    HitManager managr = HitManager.GetManager(data.name);
                    if (sprite.spriteName != data.name)
                    {
                        continue;
                    }
                    string path = GameObjectExt.GetHierarchyWithRoot(sprite.transform, go.transform);
                    managr.SetEditPrefab(go);
                    managr.AddHit(path);
                }
            }
        }
    }
예제 #4
0
    private void OnTriggerEnter(Collider col)
    {
        if (col.GetComponentInParent <IHittable>() == null)
        {
            return;
        }
        PlayerStats ps;

        if ((ps = col.GetComponentInParent <PlayerStats>()) != null && ps.gameObject == sourcePlayer.gameObject)
        {
            return;
        }
        else
        {
            Rigidbody r;
            if ((r = col.transform.GetComponent <Rigidbody>()) != null)
            {
                if (ps && !hasHit.Contains(ps))
                {
                    if (!hitSameTeam && ps.teamIndex == sourcePlayer.GetComponent <PlayerStats>().teamIndex&& ps.teamIndex != -1)
                    {
                        return;                                                                                                           // dont hit players on same team
                    }
                    hasHit.Add(ps);
                    HitManager.HitClientside(new HitArguments(r.GetComponentInParent <BasePlayer>().gameObject, sourcePlayer).withDamage(ability.damage).withEffect(effect).withEffectDuration(effectDuration).withHitSameTeam(hitSameTeam));
                    if (hasHit.Count <= 1)
                    {
                        Invoke("DestroyMe", effectDuration);
                    }
                }
            }
        }
    }
예제 #5
0
    private void OnCheckIgnore()
    {
        _ignoreList.Clear();
        if (HitManager.GetAllManagers().Count <= 0)
        {
            return;
        }

        foreach (UISpriteData data in _targetAtlas.spriteList)
        {
            HitManager mgr = HitManager.GetManager(data.name);
            if (mgr != null && mgr.hitTotal > 0)
            {
                continue;
            }

            foreach (string suffix in _ignoreSuffixs)
            {
                if (data.name.EndsWith(suffix))
                {
                    string prefix = data.name.Replace(suffix, "");
                    foreach (HitManager manager in HitManager.GetAllManagers())
                    {
                        if (manager.hitTotal > 0 &&
                            manager.spriteName != data.name && manager.spriteName.StartsWith(prefix))
                        {
                            _ignoreList.Add(data.name);
                        }
                    }
                }
            }
        }
    }
예제 #6
0
    //Populates the Game's data using info/functions from GameData;
    void Start()
    {
        LoadResources();

        hitmanager   = GetComponent <HitManager>();
        stagebuilder = GetComponent <StageBuilder>();

        player1           = SpawnMorganis();
        player1.playerNum = 1;
        player2           = SpawnExamplePlayer(new Vector3(5, -2.25F));
        player2.playerNum = 2;

        PlayerAttackManager.nullAttackLists.Add(player1.nullify);
        PlayerAttackManager.nullAttackLists.Add(player2.nullify);

        //not needed for now
        /*GameObject HUI =*/ Instantiate(healthUI);

        GameObject damageCounter1 = GameObject.Find("Player1Health");
        GameObject damageCounter2 = GameObject.Find("Player2Health");

        damageCounter1.GetComponent <DamageCounter>().damageSource = player1;
        damageCounter2.GetComponent <DamageCounter>().damageSource = player2;

        stagebuilder.ConstructFlat();
    }
예제 #7
0
    private void OnTriggerEnter(Collider col)
    {
        if (col.GetComponentInParent <IHittable>() == null)
        {
            return;
        }
        PlayerStats ps;

        if ((ps = col.GetComponentInParent <PlayerStats> ()) != null && ps.gameObject == sourcePlayer.gameObject)
        {
            return;
        }
        else
        {
            Rigidbody r;
            if ((r = col.transform.GetComponent <Rigidbody>()) != null)
            {
                if (ps)
                {
                    if (!hitSameTeam && ps.teamIndex == sourcePlayer.GetComponent <PlayerStats>().teamIndex&& ps.teamIndex != -1)
                    {
                        return;                                                                                                           // dont hit players on same team
                    }
                    r.GetComponentInParent <BasePlayer>().myRigid.AddExplosionForce(ability.pushForce, transform.position, radius);
                    HitManager.HitClientside(new HitArguments(r.GetComponentInParent <BasePlayer>().gameObject, sourcePlayer).withDamage(ability.damage).withHitSameTeam(hitSameTeam));
                }
                else
                {
                    r.AddExplosionForce(ability.pushForce, transform.position, radius);
                }
            }
        }
    }//TODO: add continuous upward force
예제 #8
0
    public override void SpawnSpell(PlayerComponent.Buf data)
    {
        Vector3 spawnAngle    = data.vectorList[0];
        Vector3 spawnPosition = data.vectorList[1];


        // Spawn our spell in the place the server told us
        // However if we are the client, we don't wait for that luxury.
        GameObject spawn = GameObject.Instantiate(itemToSpawn, spawnPosition + transform.TransformDirection(spawnOffset), transform.rotation);
        Rigidbody  r;

        Quaternion aimAngle = Quaternion.LookRotation(spawnAngle);

        flameSpawned = GameObject.Instantiate(FlameThrowerEffect, spawnPosition + transform.TransformDirection(spawnOffset), aimAngle);
        if (r = spawn.GetComponent <Rigidbody>())
        {
            r.AddForce(spawnAngle * spawnSpeed);
        }
        OnSpellSpawned(spawn);

        Destroy(flameSpawned, lifetime);
        PlayerStats sourcePlayerStats = GetComponentInParent <PlayerStats>();

        HitManager.HitClientside(new HitArguments(sourcePlayerStats.gameObject, sourcePlayerStats.gameObject).withEffect(effect).withEffectDuration(cooldown));
    }
예제 #9
0
    /// <summary>
    /// 检查全部
    /// </summary>
    private void OnCheckSameFile(List <string> validList = null)
    {
        InitSame();

        UpdateSizeHitDct(validList);

        foreach (List <string> list in _size2Filenames.Values)
        {
            if (list != null && list.Count > 1)
            {
                UpdateHashHitFiles(list, validList);
            }
        }
        HitManager.Clear();

        //初始化
        PrefabSpriteManager.InitAndCheck();
        foreach (List <string> list in _hash2Filenames.Values)
        {
            if (list == null || list.Count <= 1)
            {
                continue;
            }

            foreach (string filename in list)
            {
                string filePath = filename;
                if (!PrefabSpriteManager.pngName2Refs.ContainsKey(filePath))
                {
                    continue;
                }
                var        spriteDataList = PrefabSpriteManager.pngName2Refs[filePath];
                HitManager managr         = HitManager.GetManager(filePath);
                foreach (var spriteData in spriteDataList)
                {
                    managr.SetEditPrefab(spriteData.prefabName, spriteData.uiPath);
                    managr.AddHit(spriteData.spriteUIPath);
                }
            }
        }

        _sameCount = 0;
        foreach (List <string> list in _hash2Filenames.Values)
        {
            if (list != null && list.Count > 1)
            {
                _sameCount++;
            }
        }

        Debug.Log(string.Format("重复数为:{0}", _sameCount));

        _refCount = 0;
        foreach (var manager in HitManager.GetAllManagers())
        {
            _refCount += manager.hitTotal;
        }
        Debug.Log(string.Format("UI引用数为:{0}", _refCount));
    }
예제 #10
0
    private void Start()
    {
        _hitManager = ManagerLocator.TryGet <HitManager>();
        _pool       = ManagerLocator.TryGet <PoolManager>();

        ManagerLocator.TryGet <GameController>().OnGameOver  += HandleGameOver;
        ManagerLocator.TryGet <GameController>().OnGameStart += HandleGameStart;
    }
예제 #11
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(this);
     }
 }
예제 #12
0
 // Start is called before the first frame update
 void Start()
 {
     HitManager = GameObject.FindObjectOfType <HitManager>();
     Ball[] golfBalls = GameObject.FindObjectsOfType <Ball>();
     foreach (var golfBall in golfBalls)
     {
         if (!golfBall.isMimicBall)
         {
             golfBallTrans = golfBall.transform;
         }
     }
 }
예제 #13
0
    private int GetRefUICount(string filename)
    {
        HitManager manager = HitManager.GetManager(filename);

        return(manager.hitTotal);

        /*
         * if (!_filename2UIPaths.ContainsKey(filename)) return 0;
         * List<string> list = _filename2UIPaths[filename];
         * return list.Count;
         */
    }
예제 #14
0
        public override void Update(float gameTime,
                                    ZombieSmashers.map.Map map,
                                    ParticleManager pMan,
                                    Character[] c)
        {
            if (!netSend)
            {
                HitManager.CheckHit(this, c, pMan);

                KillMe();
            }
        }
예제 #15
0
 public override void TakeDamage(int damageAmount, Vector2 hitPosition, Vector2 hitDirection)
 {
     HitManager.SpawnHitEffect(hitPosition, hitDirection, EffectType.Blood);
     health -= damageAmount;
     if (health <= 0)
     {
         controller.SetSimulated(false);
         animator.SetTrigger("Dead");
         inputManager.enabled   = false;
         characterState.enabled = false;
         StartCoroutine(EnemyDestruction());
     }
 }
예제 #16
0
    //public List<GameObject> gONotInGround;

    void Awake()
    {
        if (instance != null)
        {
            Debug.LogError("There is two instances off CoinManager");
            return;
        }
        else
        {
            instance = this;
        }

        //gONotInGround = new List<GameObject> ();
    }
예제 #17
0
    // Start is called before the first frame update
    void Awake()
    {
        rate         = 2.0f;
        size         = 0.3f;
        speed        = 4.0f;
        n            = 1;
        theta        = 0;
        maxBulletAge = 3.0f;
        damage       = 10;
        bullets      = new List <GameObject>();
        HitManager man = GameObject.Find("[HitManager]").GetComponent <HitManager>();

        man.AddWeapon(this);
    }
예제 #18
0
        public override void Update(float gameTime, Map map, ParticleManager pMan, Character[] c)
        {
            if (HitManager.CheckHit(this, c, pMan))
            {
                Frame = 0f;
            }

            if (map.CheckParticleCol(Location))
            {
                Frame = 0f;
                pMan.MakeBulletDust(Location, Trajectory);
            }
            base.Update(gameTime, map, pMan, c);
        }
예제 #19
0
 public override void Effect_Update()
 {
     if (Time.time - lastDamage > coolDown)
     {
         if (targetStats.poisonStacks > 1)
         {
             targetStats.poisonStacks--;
             Destroy(this.gameObject);
         }
         lastDamage = Time.time;
         HitManager.HitClientside(new HitArguments(targetStats.gameObject, this.sourcePlayer.GetComponentInParent <PlayerStats> ().gameObject)
                                  .withDamage(damage));
     }
 }
예제 #20
0
    public override void TakeDamage(int damageAmount, Vector2 hitPosition, Vector2 hitDirection)
    {
        HitManager.SpawnHitEffect(hitPosition, hitDirection, EffectType.Blood);
        health -= damageAmount;
        if (health <= 0 && !GameManager.GetInstance().godModeEnabled)
        {
            controller.SetSimulated(false);
            animator.SetTrigger("Die");
            animator.SetBool("Dead", true);
            inputManager.enabled   = false;
            characterState.enabled = false;
            EventManager.TriggerEvent(Constants.PlayerDeathEvent);

            StartCoroutine(AfterPlayerDeath());
        }
    }
예제 #21
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (!targetHitted && other.CompareTag(targetTag))
        {
            targetHitted = true;

            var enemy = other.gameObject.GetComponent <Character>();
            enemy.TakeDamage(damage, transform.position, flyDirection);

            Hit();
        }
        else if (other.CompareTag("SolidObject"))
        {
            Hit();
            HitManager.SpawnHitEffect(transform.position, flyDirection, EffectType.SolidObjectHit);
        }
    }
예제 #22
0
    protected override IEnumerator EnemyDestruction()
    {
        yield return(new WaitForSeconds(destructionDelay));

        HitManager.SpawnHitEffect(transform.position, Vector3.right, EffectType.BombExplosion);

        HitManager.SpawnHitEffect(transform.position + new Vector3(-0.4f, -0.6f, 0.0f), Vector3.left, EffectType.Blood);
        HitManager.SpawnHitEffect(transform.position + new Vector3(-0.4f, 0.0f, 0.0f), Vector3.left, EffectType.Blood);
        HitManager.SpawnHitEffect(transform.position + new Vector3(-0.4f, 0.6f, 0.0f), Vector3.left, EffectType.Blood);
        HitManager.SpawnHitEffect(transform.position + new Vector3(0.4f, -0.6f, 0.0f), Vector3.right, EffectType.Blood);
        HitManager.SpawnHitEffect(transform.position + new Vector3(0.4f, 0.0f, 0.0f), Vector3.right, EffectType.Blood);
        HitManager.SpawnHitEffect(transform.position + new Vector3(0.4f, 0.6f, 0.0f), Vector3.right, EffectType.Blood);

        EventManager.TriggerEvent(Constants.DeactivatePlayerControlEvent);
        EventManager.TriggerEvent(Constants.ShowCreditsEvent);

        Destroy(this.gameObject);
    }
예제 #23
0
    void DetonateBomb()
    {
        var hittedCharacters = new HashSet <int>();

        _rigidbody2D.simulated = false;
        _rigidbody2D.velocity  = Vector2.zero;

        HitManager.SpawnHitEffect(transform.position, Vector3.right, EffectType.BombExplosion);
        var colliders = Physics2D.OverlapCircleAll(transform.position, detonationRadius);

        for (int i = 0; i < colliders.Length; i++)
        {
            var character = colliders[i].GetComponent <Character>();
            if (character && !hittedCharacters.Contains(character.gameObject.GetInstanceID()))
            {
                var raycastHit = Physics2D.Raycast(transform.position, character.transform.position - transform.position, 2 * detonationRadius);
                character.TakeDamage(damage, raycastHit.point, -raycastHit.normal);
                hittedCharacters.Add(character.gameObject.GetInstanceID());
            }
        }
        Destroy(gameObject);
    }
예제 #24
0
    public void CmdApplyDamage(HitManager.HitVerificationMethod ver, HitArguments hit)
    {
        //print("applying damage");
        PlayerStats targetStats;

        if (hit.sourcePlayerTeam != -1 && (targetStats = hit.target.GetComponentInParent <PlayerStats>()))
        {
            if (targetStats.teamIndex == this.teamIndex && !hit.hitSameTeam)
            {
                Debug.LogWarning("Same team, not registering hit on target " + hit.target);
                return;
            }
        }
        if (HitManager.VerifyHit(ver, hit) && hit.target != null && hit.target.GetComponentInParent <IHittable>() != null)
        {
            hit.target.GetComponentInParent <IHittable>().Hit(hit);
            if (hit.target.GetComponentInParent <PlayerStats>() && hit.target != this.gameObject)
            {
                RpcConfirmHit(hit.damage);
            }
        }
    }
예제 #25
0
    public void reset()
    {
        rb     = this.GetComponent <Rigidbody2D>();
        active = true;

        weapon = this.gameObject.AddComponent <Weapon>();
        weapon.Set(2f, 0.2f, 3.0f, 10, 1, 0, 2);

        hb            = this.GetComponent <HealthBar>();
        MaxHealth     = 100;
        CurrentHealth = 100;
        dead          = false;
        hb.SetHealth(MaxHealth, CurrentHealth);
        speed = 1.5f;

        experience  = 0;
        nextLevelXP = 500;

        HitManager man = GameObject.Find("[HitManager]").GetComponent <HitManager>();

        man.SetPlayer(this.gameObject);
        text.text = "";
        textTimer = 0;
    }
예제 #26
0
 // Start is called before the first frame update
 void Start()
 {
     scoreObject = GameObject.Find("Miss Box").GetComponent <HitManager>();
 }
예제 #27
0
 // Start is called before the first frame update
 void Start()
 {
     hitManager     = GameObject.FindObjectOfType <HitManager>();
     countDownMeter = GetComponent <Image>();
 }
예제 #28
0
 public override void Update(float gameTime, Map map, ParticleManager pMan, Character[] c)
 {
     HitManager.CheckHit(this, c, pMan);
     KillMe();
 }
예제 #29
0
 // Use this for initialization
 void Start()
 {
     mp  = this.GetComponent <MovementPlayer>();
     sac = this.GetComponent <SelectAnotherCharacter>();
     hm  = GameObject.FindGameObjectWithTag("GameManager").GetComponent <HitManager>();
 }
예제 #30
0
 // Start is called before the first frame update
 void Start()
 {
     HitManager = GameObject.FindObjectOfType <HitManager>();
     forceImg   = GetComponent <Image>();
 }
예제 #31
0
파일: HitManager.cs 프로젝트: brooke/grogre
 void Awake()
 {
     _instance = this;
     doOnce = true;
 }
예제 #32
0
    // Use this for initialization
    void Start()
    {
        dllFileName = "GestureworksCore32.dll";
        gmlFileName = "my_gestures.gml";

        if(Application.isEditor==true){
            windowName = "Unity - MyScene.unity - 2-Finished - PC, Mac & Linux Standalone*";
            dllFilePath = Application.dataPath.Replace("/", "\\")+"\\Plugins\\GestureWorks\\Core\\"+dllFileName;
            gmlFilePath = Application.dataPath.Replace("/", "\\")+"\\MyScripts\\"+gmlFileName;
        } else {
            // Running exe
            windowName = "InteractiveClock";
            dllFilePath = Application.dataPath.Replace("/", "\\")+"\\"+dllFileName;
            gmlFilePath = Application.dataPath.Replace("/", "\\")+"\\"+gmlFileName;
        }

        Core = new GestureWorks();
        DllLoaded = Core.LoadGestureWorksDll(dllFilePath);
        Debug.Log("DllLoaded: "+DllLoaded);

        Core.InitializeGestureWorks(Screen.width, Screen.height);
        GmlLoaded = Core.LoadGML(gmlFilePath);
        WindowLoaded = Core.RegisterWindowForTouchByName(windowName);

        TouchPoints = new Dictionary<int, TouchCircle>();

        Debug.Log("Interactive Clock");
        Debug.Log("Is DLL Loaded: " + DllLoaded);
        Debug.Log("lIs GML Loaded: " + GmlLoaded.ToString());
        Debug.Log("Is Window Loaded: " + WindowLoaded.ToString());

        GestureObjects = new List<TouchObject>();
        HitManager = new HitManager(Camera.main);
        InitializeGestureObjects();
    }
예제 #33
0
    protected virtual void Start()
    {
        this.forceFaceTo = FaceTo.None;
        this.faceTo = FaceTo.None;
        this.autoHit = this.GetComponent<AutoHit>();
        this.spriteRanderer = this.GetComponent<SpriteRenderer>();
        this.anim = this.GetComponent<Animator>();
        this.rightScale = this.transform.localScale;
        this.leftScale = new Vector3(-this.rightScale.x, this.rightScale.y, this.rightScale.z);
        this.health = maxHealth;

        var hitManagers = this.GetComponentsInChildren<HitManager>();
        foreach (var item in hitManagers)
        {
            if (item.tag == "HitColider")
            {
                this.hitManager = item;
                continue;
            }

            if (item.tag == "BackHitColider")
            {
                this.backHitManager = item;
                continue;
            }
        }

        AddItself();
    }