示例#1
0
    void ChangeWeapon(int weaponnum)                                        //assumpt when this function call, the [weaponnum] weapon is able to be change(i.e. not empty , not 0 durability
    {
        if (weaponnum == 0)                                                 //want to change to default weapon
        {
            if (curweaponorder == 1)                                        //is holding second weapon
            {
                weaponinbacklistscript.HideWeaponInBack(weaponorder[0, 1]); //if player holding second, there must be a default in back
                weaponinbacklistscript.ShowWeaponInBack(weaponorder[1, 1]); //put the holding (second) weapon in back
            }
            else if (curweaponorder == 2)                                   //if player holding throw weapon, there is 2 possible state : get two weapon in back / get default weapon in back  == default must in back
            {
                weaponinbacklistscript.HideWeaponInBack(weaponorder[0, 1]);
                if (weaponorder[2, 1] == "normalbody")
                {
                    //do sth
                    HoldingBodyDrop();//maybe drop the body and if there are fragments? change to fragments : change to empty
                }
            }
            curweaponorder  = 0;
            curweaponanim   = weaponlistscript.changeweapon(curweaponanim, weaponorder[0, 0], weaponorder[0, 1], 100); //100 is meaningless, durability is no use for default weapon
            curweaponweight = int.Parse(weaponorder[0, 2]);
        }
        else if (weaponnum == 1)     // want to change to second weapon : here assume second weapon is not empty(in back)
        {
            if (curweaponorder == 0) //is holding default weapon
            {
                weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]);
                weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]);
            }
            else if (curweaponorder == 2) //is holding throw weapon, there must be two weapon in back
            {
                weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]);
                if (weaponorder[2, 1] == "normalbody")
                {
                    //do sth
                    HoldingBodyDrop();//maybe drop the body and if there are fragments? change to fragments : change to empty
                }
            }
            curweaponorder  = 1;
            curweaponanim   = weaponlistscript.changeweapon(curweaponanim, weaponorder[1, 0], weaponorder[1, 1], cursecweadurability);
            curweaponweight = int.Parse(weaponorder[1, 2]);
        }
        else //weaponnum == 2 == want to change to throweapon > body cannot be hide > must be bodyfragment(s)
        {
            weaponinbacklistscript.ShowWeaponInBack(weaponorder[curweaponorder, 1]);

            curweaponorder  = 2;
            curweaponanim   = weaponlistscript.changeweapon(curweaponanim, weaponorder[2, 0], weaponorder[2, 1], fragmentcount);
            curweaponweight = int.Parse(weaponorder[2, 2]);
        }

        anim.SetTrigger("weaponchanged");
        curweaponfacing = curweaponanim.GetComponent <weaponfacing>();
        curweaponfacing.Show();
    }
示例#2
0
    //**************************************//

    // Use this for initialization
    void Start()
    {
        //CC = GetComponent<CharacterController>();
        man                    = transform.Find("man");
        cursca                 = transform.localScale;
        face                   = man.Find("face").gameObject;
        weapon                 = transform.Find("weapon");
        weaponinback           = man.Find("body/backweaponctrl");
        weaponlistscript       = weapon.GetComponent <weaponlist>();
        weaponinbacklistscript = weaponinback.GetComponent <weaponinbacklist>();
        zerovetor              = Vector2.zero;
        anim                   = man.GetComponent <Animator>();
        col                    = GetComponent <BoxCollider2D>();
        body                   = GetComponent <Rigidbody2D>();
        mousepos               = zerovetor;
        curweaponweight        = int.Parse(weaponorder[0, 2]);
        //rhand = transform.Find("rhand").gameObject;
        //punchhitbox = rhand.GetComponent<CircleCollider2D>();
        curweaponanim   = weaponlistscript.changeweapon(curweaponanim, "melee", "stopbrand", 100);
        curweaponfacing = curweaponanim.GetComponent <weaponfacing>();
        droppt          = man.Find("droppt");
        bodyfragment    = weapon.Find("throw/bodyfragment/bodypos");
        startrot        = transform.rotation;

        SoundList = man.GetComponents <AudioSource>();
        footstep  = new AudioSource[footstepnum];
        for (int i = 0; i < footstepnum; i++)
        {
            footstep[i] = SoundList[i];
        }
        rollsound = SoundList[footstepnum]; //4, which is the 5th

        particleeffect = transform.Find("effect");
        walkdust       = particleeffect.Find("walkdust").GetComponent <ParticleSystem>();
        rolldust       = particleeffect.Find("rolldust").GetComponent <ParticleSystem>();
    }
示例#3
0
    void PickUpWeapon()
    {
        if (Input.GetButtonDown("PickUp"))
        {
            if (pickableweaponcount > 0)
            {
                if (closestweapon.gameObject.layer == 17 || closestweapon.CompareTag("chest")) //17 is Interactable Layer
                {
                    closestweapon.GetComponent <interactable>().Interact(transform);
                    return;
                }

                weaponinfo = dropweaponscript.getweaponinfo();

                if (curweaponorder == 2 && weaponorder[2, 1] == "normalbody") // if holding a body
                {
                    HoldingBodyDrop();
                }

                if (weaponinfo[0] == "throw")
                {
                    if (weaponinfo[1] == "normalbody")
                    {
                        curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], 100); // [0][1][2] stand for type, weaponname, weight ,  [3] weight is not need in weaponlist script
                        UpdateThrowWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], "100");                                          // [2] weight is not need in weaponlist script, but used in here
                    }
                    else
                    {
                        if (weaponorder[2, 1] != "empty")
                        {
                            if (weaponinfo[1] == weaponorder[2, 1]) //check is player already have that weapon
                            {
                                fragmentcount += float.Parse(weaponinfo[3]);
                            }
                            else //useless now, because there is only one type = bodyframent
                            {
                                weapondropped = Instantiate(Resources.Load("dropweapon/" + weaponorder[2, 1]), droppt.position, Quaternion.identity) as GameObject;
                                weapondropped.GetComponent <dropweapon>().setdurability(cursecweadurability);
                            }
                        }
                        else
                        {
                            fragmentcount = float.Parse(weaponinfo[3]);
                        }
                        curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], fragmentcount); // [0][1][2] stand for type, weaponname, weight ,  [3] weight is not need in weaponlist script
                        UpdateThrowWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], fragmentcount.ToString());                                 // [2] weight is not need in weaponlist script, but used in here
                    }

                    anim.SetTrigger("weaponchanged");  //****use to interrupt the attack animation to prevent player attack and changed weapon at the same time******//

                    weaponinbacklistscript.ShowWeaponInBack(weaponorder[curweaponorder, 1]);
                    curweaponorder = 2;
                }
                else //other types, which means that will be places as second weapon
                {
                    /*if (weaponorder[1,1] != "empty")
                     * {
                     *  if (weaponinfo[1] == weaponorder[1, 1]) //check is player already have that weapon
                     *  {
                     *      cursecweadurability += float.Parse(weaponinfo[3]);
                     *  }
                     *  else
                     *  {
                     *      weapondropped = Instantiate(Resources.Load("dropweapon/" + weaponorder[1, 1]), droppt.position, Quaternion.identity) as GameObject;
                     *      weapondropped.GetComponent<dropweapon>().setdurability(cursecweadurability);
                     *  }
                     * }
                     * else
                     * {
                     *  cursecweadurability = float.Parse(weaponinfo[3]);
                     * }
                     *
                     * //curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], cursecweadurability); // [0][1][2] stand for type, weaponname, weight ,  [3] weight is not need in weaponlist script
                     * //anim.SetTrigger("weaponchanged");  //use to interrupt the attack animation to prevent player attack and changed weapon at the same time//
                     *
                     * weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]); //this order can make sure the same name weapon can show
                     * UpdateSecondWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], cursecweadurability.ToString()); // [2] weight is not need in weaponlist script, but used in here
                     *
                     * curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], cursecweadurability);
                     *
                     * if (curweaponorder == 0) // if player using default/throw weapon, then change to second
                     * {
                     *  weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]);
                     * }
                     * curweaponorder = 1;*/

                    if (weaponorder[1, 1] == "empty")
                    {
                        if (curweaponorder == 0)
                        {
                            weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]);
                        }
                        cursecweadurability = float.Parse(weaponinfo[3]);
                    }
                    else
                    {
                        if (curweaponorder == 0)
                        {
                            weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]);
                            weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]);
                        }
                        else if (curweaponorder == 2)
                        {
                            weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]);
                        }

                        if (weaponinfo[1] == weaponorder[1, 1]) //check is player already have that weapon
                        {
                            cursecweadurability += float.Parse(weaponinfo[3]);
                        }
                        else
                        {
                            weapondropped = Instantiate(Resources.Load("dropweapon/" + weaponorder[1, 1]), droppt.position, Quaternion.identity) as GameObject;
                            weapondropped.GetComponent <dropweapon>().setdurability(cursecweadurability);
                        }
                    }
                    UpdateSecondWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], cursecweadurability.ToString()); // [2] weight is not need in weaponlist script, but used in here

                    curweaponanim  = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], cursecweadurability);
                    curweaponorder = 1;
                }

                curweaponweight = int.Parse(weaponorder[curweaponorder, 2]);
                curweaponfacing = curweaponanim.GetComponent <weaponfacing>();
            }
        }
    }