Example #1
0
    // Update is called once per frame
    void Update()
    {
        //transform.Translate(speed * Time.deltaTime, Space.World);
        //proTransform.Translate(flySpeed * dir * deltaTime, Space.World);
        if (Time.time - startTime > explodeTime)
        {
            ResourceConfigScript rc = GameApp.GetInstance().GetResourceConfig();
            Player player           = GameApp.GetInstance().GetGameScene().GetPlayer();

            float distance = Mathf.Sqrt((transform.position - player.GetTransform().position).sqrMagnitude);

            if (distance < radius)
            {
                Ray        ray = new Ray(transform.position, player.GetTransform().position - (transform.position));
                RaycastHit rayhit;
                if (Physics.Raycast(ray, out rayhit, distance, 1 << PhysicsLayer.WALL | 1 << PhysicsLayer.TRANSPARENT_WALL | 1 << PhysicsLayer.PLAYER))
                {
                    Debug.Log(rayhit.collider.gameObject.name);
                    if (rayhit.collider.gameObject.name == "Player")
                    {
                        player.OnHit(damage);
                    }
                }
                else
                {
                    player.OnHit(damage);
                }
            }

            GameObject.Instantiate(rc.rocketExlposion, transform.position, Quaternion.identity);

            GameObject.Destroy(gameObject);
        }
    }
Example #2
0
        public virtual void Init()
        {
            gameScene = GameApp.GetInstance().GetGameScene();
            rConf     = GameApp.GetInstance().GetResourceConfig();

            gameCamera      = gameScene.GetCamera();
            cameraComponent = gameCamera.GetComponent <Camera>();
            cameraTransform = gameCamera.CameraTransform;
            player          = gameScene.GetPlayer(); //! 获取场景中的人物

            aimTarget = new Vector3();

            hitParticles    = rConf.hitparticles;
            projectile      = rConf.projectile;
            hitForce        = 0f;
            weaponBoneTrans = player.GetTransform().Find(BoneName.WEAPON_PATH);   //! 获取人物中挂载武器的节点

            //gun = weaponBoneTrans.Find("Rifle").gameObject;
            CreateGun();
            gun.transform.parent = weaponBoneTrans;


            BindGunAndFire();

            shootAudio = gun.GetComponent <AudioSource>();
            if (shootAudio == null)
            {
            }
            else
            {
            }
            GunOff();
        }
Example #3
0
 public void OnHit(float damage)
 {
     rConf = GameApp.GetInstance().GetResourceConfig();
     hp   -= damage;
     if (hp <= 0)
     {
         Destroy(gameObject);
         Object.Instantiate(rConf.woodExplode, transform.position, Quaternion.identity);
         SendMessage("OnLoot");
     }
 }
Example #4
0
        // Use this for initialization
        public virtual void Init(GameObject gObject)
        {
            gameScene      = GameApp.GetInstance().GetGameScene();
            player         = gameScene.GetPlayer();
            enemyObject    = gObject;
            enemyTransform = enemyObject.transform;
            animation      = enemyObject.GetComponent <UnityEngine.Animation>();
            aimedTransform = enemyTransform.Find(BoneName.ENEMY_AIMED_PATH);
            rigidbody      = enemyObject.GetComponent <Rigidbody>();
            //collider = enemyObject.transform.Find(BoneName.ENEMY_BODY).collider;
            collider = enemyObject.transform.GetComponent <Collider>();
            //sceneGUI = GameObject.Find("SceneGUI").GetComponent<SceneGUI>();
            rConfig = GameApp.GetInstance().GetResourceConfig();


            gConfig          = GameApp.GetInstance().GetGameConfig();
            controller       = enemyObject.GetComponent <Collider>() as CharacterController;
            detectionRange   = 150.0f;
            attackRange      = 1.5f;
            minRange         = 1.5f;
            lootCash         = 0;
            criticalAttacked = false;
            spawnCenter      = enemyTransform.position;

            target = GameObject.Find("Player").transform;

            //rigidbody.centerOfMass = Vector3.up;

            audio = new AudioPlayer();
            Transform audioFolderTrans = enemyTransform.Find("Audio");

            audio.AddAudio(audioFolderTrans, "Attack");
            audio.AddAudio(audioFolderTrans, "Walk");
            audio.AddAudio(audioFolderTrans, "Dead");
            audio.AddAudio(audioFolderTrans, "Special");
            audio.AddAudio(audioFolderTrans, "Shout");

            hitBloodObjectPool = GameApp.GetInstance().GetGameScene().HitBloodObjectPool;

            pathFinding = new GraphPathFinding();

            animation.wrapMode = WrapMode.Loop;
            animation.Play(AnimationName.ENEMY_IDLE);

            state = IDLE_STATE;

            lastUpdateTime      = Time.time;
            lastPathFindingTime = Time.time;

            idleStartTime = -2;
            enemyObject.GetComponent <UnityEngine.Animation>()[AnimationName.ENEMY_ATTACK].wrapMode = WrapMode.ClampForever;

            path = GameApp.GetInstance().GetGameScene().GetPath();
        }
Example #5
0
    // Use this for initialization
    public void Start()
    {
        rConf              = GameApp.GetInstance().GetResourceConfig();
        resObject          = rConf.projectile;
        smallExplodeObject = rConf.salivaExplosion;
        explodeObject      = rConf.rocketExlposion;
        proTransform       = transform;
        laserHitObject     = rConf.laserHit;
        createdTime        = Time.time;
        lastCheckPosTime   = Time.time;
        lastPos            = proTransform.position;
        //dir = (targetTransform.position - proTransform.position).normalized;

        //dir = Vector3.Cross((targetTransform.position - proTransform.position), Vector3.up).normalized;
        //proTransform.LookAt(targetTransform.position);
    }
Example #6
0
    public void ChangeAvatar(AvatarType aType)
    {
        ClearModels();
        GameObject avatarObj = AvatarFactory.GetInstance().CreateAvatar(aType);  //! 改变人物

        avatarObj.transform.rotation = Quaternion.Euler(0f, 200f, 0f);

        ResourceConfigScript rConf = GameApp.GetInstance().GetResourceConfig();

        Weapon w = GameApp.GetInstance().GetGameState().GetBattleWeapons()[0];
        string firstWeaponName = w.Name;
        string wNameEnd        = Weapon.GetWeaponNameEnd(w.GetWeaponType());

        GameObject weapon          = WeaponFactory.GetInstance().CreateWeaponModel(firstWeaponName, avatarObj.transform.position, avatarObj.transform.rotation); //! 创建武器
        Transform  weaponBoneTrans = avatarObj.transform.Find(BoneName.WEAPON_PATH);                                                                             //! 获取人物上挂载武器的节点

        weapon.transform.parent        = weaponBoneTrans;                                                                                                        //! 设置武器的父节点
        avatarObj.transform.localScale = scale;
        avatarObj.GetComponent <UnityEngine.Animation>()[AnimationName.PLAYER_IDLE + wNameEnd].wrapMode = WrapMode.Loop;
        avatarObj.GetComponent <UnityEngine.Animation>().Play(AnimationName.PLAYER_IDLE + wNameEnd);

        SetModel(avatarObj);
        lastMotionTime = Time.time;
    }
Example #7
0
 public void LoadResource()
 {
     //Debug.Log("Load Game Resources");
     resourceConfig = GameObject.Find("ResourceConfig").GetComponent <ResourceConfigScript>();
 }
 // Use this for initialization
 void Start()
 {
     rConfig = GameObject.Find("ResourceConfig").GetComponent <ResourceConfigScript>();
     timer.SetTimer(1f, false);
 }
Example #9
0
    void SpawnItem(ItemType itemType)
    {
        /*
         * GameObject itemObj = Object.Instantiate(GameApp.GetInstance().GetGameConfig().items[(int)itemID], transform.position, Quaternion.identity) as GameObject;
         * Item item = new Item();
         * item.ItemObject = itemObj;
         * item.ID = itemID;
         * item.Init();
         * GameApp.GetInstance().GetItems().Add(item);
         */

        ResourceConfigScript rConf = GameApp.GetInstance().GetResourceConfig();

        GameObject item = null;

        Ray        ray = new Ray(transform.position + Vector3.up * 1.0f, Vector3.down);
        RaycastHit hit;
        float      floorY = Constant.FLOORHEIGHT;

        if (Physics.Raycast(ray, out hit, 100, 1 << PhysicsLayer.FLOOR))
        {
            floorY = hit.point.y;
        }


        switch (itemType)
        {
        case ItemType.Hp:
            item = Object.Instantiate(rConf.itemHP, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
            item.GetComponent <ItemScript>().itemType = itemType;
            break;

        case ItemType.Power:
            item = Object.Instantiate(rConf.itemPower, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
            item.GetComponent <ItemScript>().itemType = itemType;
            break;

        case ItemType.Gold:
            item = Object.Instantiate(rConf.itemGold, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
            item.GetComponent <ItemScript>().itemType = itemType;
            break;

        case ItemType.RandomBullets:
            WeaponType weaponType = GameApp.GetInstance().GetGameState().RandomBattleWeapons();

            switch (weaponType)
            {
            case WeaponType.AssaultRifle:
                item = Object.Instantiate(rConf.itemAssaultGun, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                ItemScript its = item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;
                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.AssaultGun;
                break;

            case WeaponType.ShotGun:
                item = Object.Instantiate(rConf.itemShotGun, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;
                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.ShotGun;
                break;

            case WeaponType.RocketLauncher:
                item = Object.Instantiate(rConf.itemRocketLauncer, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;
                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.RocketLauncer;
                break;

            case WeaponType.LaserGun:
                item = Object.Instantiate(rConf.itemLaser, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;

                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.LaserGun;
                break;

            case WeaponType.Saw:
                item = Object.Instantiate(rConf.saw, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;
                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.Saw;
                break;

            case WeaponType.Sniper:
                item = Object.Instantiate(rConf.itemMissle, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;
                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.Sniper;
                break;

            case WeaponType.MachineGun:
                item = Object.Instantiate(rConf.itemGatlin, new Vector3(transform.position.x, floorY + Constant.ITEM_LOWPOINT, transform.position.z), Quaternion.identity) as GameObject;
                item.AddComponent <ItemScript>();
                item.AddComponent <SphereCollider>().isTrigger = true;
                item.layer = PhysicsLayer.ITEMS;
                item.GetComponent <ItemScript>().itemType = ItemType.MachineGun;
                break;
            }
            break;
        }

        /*
         * GameObject halo = Object.Instantiate(rConf.halo, item.transform.position, Quaternion.Euler(0, 0, 0)) as GameObject;
         * halo.AddComponent<LookAtCameraScript>();
         * halo.transform.localScale = Vector3.one * 1.2f;
         * halo.transform.parent = item.transform;
         */
    }
Example #10
0
        public GameObject CreateWeaponModel(string weaponName, Vector3 pos, Quaternion rotation)
        {
            GameObject           model = null;
            ResourceConfigScript rConf = GameApp.GetInstance().GetResourceConfig();

            switch (weaponName)
            {
            case GunName.M4:
                model = (GameObject)GameObject.Instantiate(rConf.m4, pos, rotation);
                break;

            case GunName.MP5:
                model = (GameObject)GameObject.Instantiate(rConf.mp5, pos, rotation);
                break;

            case GunName.AK47:
                model = (GameObject)GameObject.Instantiate(rConf.ak47, pos, rotation);
                break;

            case GunName.P90:
                model = (GameObject)GameObject.Instantiate(rConf.p90, pos, rotation);
                break;

            case GunName.AUG:
                model = (GameObject)GameObject.Instantiate(rConf.aug, pos, rotation);
                break;

            case GunName.WINCHESTER1200:
                model = (GameObject)GameObject.Instantiate(rConf.winchester1200, pos, rotation);
                break;

            case GunName.REMINGTON870:
                model = (GameObject)GameObject.Instantiate(rConf.remington870, pos, rotation);
                break;

            case GunName.XM1014:
                model = (GameObject)GameObject.Instantiate(rConf.xm1014, pos, rotation);
                break;

            case GunName.RPG:
                model = (GameObject)GameObject.Instantiate(rConf.rpgGun, pos, rotation);
                break;

            case GunName.LASERGUN:
                model = (GameObject)GameObject.Instantiate(rConf.lasergun, pos, rotation);
                break;

            case GunName.GATLIN:
                model = (GameObject)GameObject.Instantiate(rConf.gatlin, pos, rotation);
                break;

            case GunName.SNIPER:
                model = (GameObject)GameObject.Instantiate(rConf.sniper, pos, rotation);
                break;

            case GunName.SAW:
                model = (GameObject)GameObject.Instantiate(rConf.saw, pos, rotation);
                break;

            default:
                model = (GameObject)GameObject.Instantiate(rConf.m4, pos, rotation);
                break;
            }
            return(model);
        }