示例#1
0
    IEnumerator DelayedRespawn(float seconds)
    {
        yield return(new WaitForSeconds(seconds));

        if (Respawn)
        {
            PlayerMovement pm = gameObject.GetComponent <PlayerMovement>();
            if (pm == null)
            {
                pm = gameObject.transform.parent.GetComponent <PlayerMovement>();
            }

            pm.gameObject.transform.position = SpawnManager.instance.GetRandomSpawnPoint();

            Rigidbody2D rig = isClone ? gameObject.transform.parent.gameObject.GetComponent <Rigidbody2D>() : GetComponent <Rigidbody2D>();
            //animations, immunity and stopping movement during that
            rig.gravityScale = 1;
            rig.isKinematic  = false;
            Array.ForEach(GetComponentsInChildren <Collider2D>(), x => x.isTrigger = false);
            SheetAnimation ani       = isClone ? gameObject.transform.parent.gameObject.GetComponent <SheetAnimation>() : GetComponent <SheetAnimation>();
            float          spawnTime = 0.5f;
            ani.PlayAnimation("Spawn", color, false, 8.0f / spawnTime);
            SetImmunity(true, true, spawnTime * 2.0f);  //extra immunity after spawning (*2.0f)
            pm.StunnedTimer = spawnTime;
            rig.isKinematic = true;
            StartCoroutine(SpawnCallback(spawnTime));
        }
        else
        {
            LevelBounds.instance.UnRegisterObject(this.gameObject);
            GameObject.Destroy(this.gameObject);
        }
    }
示例#2
0
    GameObject LoadButtonPointer()
    {
        GameObject pointer = new GameObject("buttonPointer");

        pointer.AddComponent <SpriteRenderer>();
        SheetAnimation animation = pointer.AddComponent <SheetAnimation>();

        animation.doIdle = false;
        return(pointer);
    }
示例#3
0
    void Awake()
    {
        overlayObject = new GameObject("OverlayObject");

        overlayObject.transform.parent        = gameObject.transform;
        overlayObject.transform.localPosition = Vector3.zero;
        SRenderer = overlayObject.AddComponent <SpriteRenderer>();
        SRenderer.sortingOrder = -10;
        SAnimation             = overlayObject.AddComponent <SheetAnimation>();
        SAnimation.doIdle      = false;
        MainRenderer           = GetComponent <SpriteRenderer>();
        if (LevelBounds.instance != null)
        {
            LevelBounds.instance.RegisterObject(overlayObject);
        }
    }
示例#4
0
    // Use this for initialization
    void Start()
    {
        baseMoveSpeed = MoveSpeed;
        _rigid        = GetComponent <Rigidbody2D>();
        SpriteR       = GetComponent <SpriteRenderer>();

        SAnimation = GetComponent <SheetAnimation>();
        Pcolor     = GetComponent <PlayerHit>().color;
        overlay    = GetComponent <SpriteOverlay>();
        if (currentAxis == 0 && InputManager.GetAxis("Horizontal", playerID) != 0)
        {
            ChangeAxis();
        }

        /*
         * GameObject clones = new GameObject("test clones");
         * testClone = new GameObject();
         * testClone.transform.parent = clones.transform;
         * testClone.AddComponent<SpriteRenderer>().sprite = SpriteR.sprite;
         * testClone.GetComponent<SpriteRenderer>().sortingOrder = SpriteR.sortingOrder - 1;
         * testClone.transform.localScale = new Vector3(testClone.transform.localScale.x * 0.3f, testClone.transform.localScale.y * 0.3f, testClone.transform.localScale.z);
         *
         * testClone2 = new GameObject();
         * testClone2.transform.parent = clones.transform;
         * testClone2.AddComponent<SpriteRenderer>().sprite = SpriteR.sprite;
         * testClone2.GetComponent<SpriteRenderer>().flipY = true;
         * testClone2.GetComponent<SpriteRenderer>().sortingOrder = SpriteR.sortingOrder - 2;
         * testClone2.GetComponent<SpriteRenderer>().color = Color.yellow;
         * testClone2.transform.localScale = new Vector3(testClone2.transform.localScale.x * 0.3f, testClone2.transform.localScale.y * 0.3f, testClone2.transform.localScale.z);
         *
         * for (int i = 0; i < testClones.Length; i++)
         * {
         *  testClones[i] = new GameObject();
         *  testClones[i].transform.parent = clones.transform;
         *  testClones[i].AddComponent<SpriteRenderer>().sprite = SpriteR.sprite;
         *  testClones[i].GetComponent<SpriteRenderer>().flipY = true;
         *  testClones[i].GetComponent<SpriteRenderer>().sortingOrder = SpriteR.sortingOrder - 3;
         *  testClones[i].GetComponent<SpriteRenderer>().color = Color.magenta;
         *  testClones[i].transform.localScale = new Vector3(testClones[i].transform.localScale.x * 0.3f, testClones[i].transform.localScale.y * 0.3f + ((float)i / 25f), testClones[i].transform.localScale.z);
         * }
         */
    }
示例#5
0
    protected override void Pickup(GameObject player)
    {
        PlayerMovement mov = player.GetComponent <PlayerMovement>();

        if (!mov)
        {
            mov = player.transform.parent.gameObject.GetComponent <PlayerMovement>();
        }
        ScoreManager.instance.ChangeScore((int)mov.playerID, ScoreManager.instance.scoreMode == ScoreManager.ScoreMode.Health? -1 : 1);
        GameObject temp = new GameObject("Life animation");

        temp.transform.position = transform.position;
        temp.AddComponent <SpriteRenderer>();
        SheetAnimation SA   = temp.AddComponent <SheetAnimation>();
        float          time = 1.5f;

        SA.PlayAnimationUnC("Powerups/Powers/LifeUp/Life", false, 8f / time);
        temp.AddComponent <DestroyAfterSeconds>().Seconds = time;
        ScoreManager.gameData.LivesPicked++;
    }
示例#6
0
文件: Lobby.cs 项目: relo999/Skilled
    GameObject LoadButtonPointer()
    {
        GameObject pointer = new GameObject("buttonPointer");
        int        amount  = 2;

        buttonPointerAnimations = new SheetAnimation[amount];
        for (int i = 0; i < amount; i++)
        {
            GameObject pointerImage = new GameObject("buttonPointerImage" + i);
            pointerImage.transform.parent         = pointer.transform;
            pointerImage.transform.localPosition += new Vector3(buttonPointerXOffsets[i], 0, 0);
            pointerImage.transform.localScale     = new Vector3(buttonPointerScale, buttonPointerScale, 1);
            SpriteRenderer sRenderer = pointerImage.AddComponent <SpriteRenderer>();
            sRenderer.sortingOrder = 10;
            sRenderer.flipX        = i % 2 == 0;
            SheetAnimation animation = pointerImage.AddComponent <SheetAnimation>();
            animation.doIdle           = false;
            buttonPointerAnimations[i] = animation;
        }
        return(pointer);
    }
示例#7
0
    public void Init()
    {
        _col                = GetComponent <BoxCollider2D>();
        _rigid              = GetComponent <Rigidbody2D>();
        _lastXPos           = transform.position.x;
        _spriteR            = GetComponent <SpriteRenderer>();
        _sheetAni           = GetComponent <SheetAnimation>();
        _sheetAni.doIdle    = false;
        _stunnedSpriteSheet = Resources.LoadAll <Sprite>("SinglePlayer/Enemies/Knocked out");
        if (!_stunnedObject)
        {
            _stunnedObject = new GameObject();

            _stunnedObject.transform.parent        = this.transform;
            _stunnedObject.transform.localPosition = Vector2.zero;
            _stunnedObject.AddComponent <SpriteRenderer>();
            _stunnedObject.AddComponent <SheetAnimation>().doIdle = false;
            _stunnedObject.SetActive(false);
        }
        SetSpeed();
        CorrectSprite();
    }
示例#8
0
    public void OnDeath(GameObject other)
    {
        FindObjectOfType <Splat>().DoSplat(transform.position, 0, (int)color);

        /*
         * //splat
         * GameObject splatObject = new GameObject("splatInstance");
         * splatObject.transform.position = this.gameObject.transform.position;
         * SpriteRenderer SR = splatObject.AddComponent<SpriteRenderer>();
         * SR.flipX = UnityEngine.Random.Range(0, 2) == 0? false : true;
         * SR.flipY = UnityEngine.Random.Range(0, 2) == 0 ? false : true;
         *
         * SR.sortingOrder = -14;  //before background but behind the rest
         * SheetAnimation ani = splatObject.AddComponent<SheetAnimation>();
         * LevelBounds.instance.RegisterObject(splatObject, true);
         * ani.PlayAnimation("Splat", color, false, 1);
         */
        /*
         * //shield powerup / spawn immunity
         * if(Immunity)
         * {
         *  if (!StayImmune) Immunity = false;
         *  IC();
         *  return;
         * }*/
        //score
        //Debug.Log(other.name + gameObject.name);
        int playerID     = other.name.Contains("1") ? 0 : (other.name.Contains("2") ? 1 : (other.name.Contains("3") ? 2 : 3));
        int thisplayerID = gameObject.name.Contains("1") ? 0 : (gameObject.name.Contains("2") ? 1 : (gameObject.name.Contains("3") ? 2 : 3));

        if (playerID == thisplayerID)
        {
            return;
        }
        //if (playerID > ScoreManager.instance.score.Length) playerID = 1;
        int useingID = ScoreManager.instance.scoreMode == ScoreManager.ScoreMode.Health ? thisplayerID : playerID;

        ScoreManager.instance.ChangeScore(useingID, ScorePerKill);
        if (ScoreManager.instance.scoreMode == ScoreManager.ScoreMode.Health && ScoreManager.instance.score[useingID] <= 0)
        {
            Respawn = false;
        }



        //Tag mode
        if (ScoreManager.instance.gameMode is TagMode)
        {
            TagMode Tagmode = (TagMode)ScoreManager.instance.gameMode;
            if (Tagmode.currentTag == other)
            {
                Tagmode.RemoveTag(other);
                //if (other.GetComponentInChildren<PlayerHit>())
                Tagmode.SetTag(gameObject);
            }

            /*
             * else if (Tagmode.currentTag == other)
             * {
             *  ScoreManager.instance.ChangeScore(playerID, 5);//bonus points if you are the Tag
             * }*/
        }
        else

        if (ScoreManager.instance.gameMode is OwnedMode)
        {
            OwnedMode ownedMode = (OwnedMode)ScoreManager.instance.gameMode;
            ownedMode.SetOwned(gameObject, other);
        }
        else

        //chicken mode
        if (ScoreManager.instance.gameMode is ChickenMode)
        {
            ChickenMode chickenmode = (ChickenMode)ScoreManager.instance.gameMode;
            if (chickenmode.currentChicken == gameObject || chickenmode.currentChicken == null)
            {
                chickenmode.RemoveChicken(gameObject);
                if (other.GetComponentInChildren <PlayerHit>())
                {
                    chickenmode.SetChicken(other);
                }
            }
            else if (chickenmode.currentChicken == other)
            {
                ScoreManager.instance.ChangeScore(playerID, 5);//bonus points if you are the chicken
            }
        }


        float          deathTime = 0.5f;
        PlayerMovement pm        = isClone ? gameObject.transform.parent.gameObject.GetComponent <PlayerMovement>() : GetComponent <PlayerMovement>();

        pm.StunnedTimer = deathTime;
        Rigidbody2D rig = isClone ? gameObject.transform.parent.gameObject.GetComponent <Rigidbody2D>() : GetComponent <Rigidbody2D>();

        rig.gravityScale = 0;
        rig.velocity     = Vector2.zero;
        rig.isKinematic  = true;
        PowerupUser pu = isClone? gameObject.transform.parent.gameObject.GetComponent <PowerupUser>() : GetComponent <PowerupUser>();

        pu.EndAllPowerups();
        Array.ForEach(GetComponentsInChildren <Collider2D>(), x => x.isTrigger = true);
        SheetAnimation sa = isClone ? gameObject.transform.parent.gameObject.GetComponent <SheetAnimation>() : GetComponent <SheetAnimation>();

        sa.PlayAnimation("Death", color, false, 5.0f / deathTime);
        StartCoroutine(DelayedRespawn(deathTime));

        /*
         * if (Respawn)
         * {
         *  PlayerMovement pm = gameObject.GetComponent<PlayerMovement>();
         *  if (pm == null) pm = gameObject.transform.parent.GetComponent<PlayerMovement>();
         *  PlayerMovement.Controls controls = pm.controls;
         *  pm.gameObject.transform.position = SpawnManager.instance.GetRandomSpawnPoint();
         * }
         * else
         * {
         *  GameObject.Destroy(this.gameObject);
         * }*/
    }