// 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); } }
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(); }
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"); } }
// 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(); }
// 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); }
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; }
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); }
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; */ }
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); }