public void GetHit(DHitParam hit) { GameObject flyingtext = DGameSystem.LoadPool("TextDame", transform.position + new Vector3(0, 0.5f)); flyingtext.GetComponent <TextMeshPro>().text = Convert.ToInt32(hit.dame).ToString(); current.hp -= hit.dame; UpdateHealthBar(); if (current.hp <= 0) { DGameSystem.LoadPool("Ghost", transform.position); gameObject.SetActive(false); } }
//public void Attack() //{ // Quaternion quaternion = Quaternion.Euler(0, 0, 0); // switch (GetComponent<DMovement>().Facing) // { // case "up": // quaternion = Quaternion.Euler(0, 0, 90); // break; // case "down": // quaternion = Quaternion.Euler(0, 0, 270); // break; // case "left": // quaternion = Quaternion.Euler(0, 0, 180); // break; // case "right": // quaternion = Quaternion.Euler(0, 0, 0); // break; // default: // quaternion = Quaternion.Euler(0, 0, 0); // break; // } // GameObject attack = DGameSystem.LoadPool("Attack", transform.position); // attack.transform.rotation = quaternion; // DHitParam hitParam = attack.GetComponent<DHitParam>(); // hitParam.dame = current.dame; // hitParam.owner = this.gameObject; // hitParam.ownerTag = this.gameObject.tag; // hitParam.type1 = stat.type1; // hitParam.type2 = stat.type2; // if (gameObject.tag == "Player") // { // string facing = GetComponent<DMovement>().Facing; // Sprite[] attacks = GetComponent<DMovement>().ConvertStringToSprites("attack_" + facing); // GetComponent<DAnimator>().spritesheet = attacks; // //GetComponent<DAnimator>().attacking = true; // } //} public void ExecuteAttack() { GameObject attackObj = DGameSystem.LoadPool(stat.attackObjectName, transform.position); attackObj.transform.rotation = Quaternion.Euler(0, 0, 0); DHitParam hitParam = new DHitParam(); hitParam.dame = current.dame; hitParam.owner = gameObject; hitParam.ownerTag = gameObject.tag; hitParam.type1 = stat.type1; hitParam.type2 = stat.type2; if (gameObject.CompareTag("Pet")) { hitParam.targetTags = new List <string> { "Monster" } } ; else { hitParam.targetTags = new List <string> { "Pet" } }; if (gameObject.tag == "Player") { hitParam.direction = GetComponent <DMovement>().Facing; } else { hitParam.target = GetComponent <DFollow>().enemy; hitParam.direction = GetComponent <DFollow>().direction; if (hitParam.direction == "left") { attackObj.transform.rotation = Quaternion.Euler(0, 0, 180); } else { attackObj.transform.rotation = Quaternion.Euler(0, 0, 0); } } attackObj.SendMessage("ReceiveParam", hitParam, SendMessageOptions.DontRequireReceiver); } }
void Update() { if (state != "large") { countdown -= Time.deltaTime; if (countdown < 0) { countdown = Random.Range(plant.growTime - RANDOM_RANGE, plant.growTime + RANDOM_RANGE); state = changeToNextState(state); } } else { if (!spawnedCoin) { countdownCoin -= Time.deltaTime; if (countdownCoin < 0) { spawnedCoin = true; countdownCoin = Random.Range(plant.coinSpawn - RANDOM_RANGE, plant.coinSpawn + RANDOM_RANGE); Vector3 position = transform.position; position = new Vector3(Random.Range(position.x - RANDOM_COIN_DISTANCE, position.x + RANDOM_COIN_DISTANCE), Random.Range(position.y - RANDOM_COIN_DISTANCE, position.y + RANDOM_COIN_DISTANCE), 0); GameObject coin = DGameSystem.LoadPool("Coin", position); coin.GetComponent <DCoin>().value = plant.coinValue; coin.GetComponent <DCoin>().owner = gameObject; coin.transform.localScale = new Vector3(plant.coinSize, plant.coinSize); } } } if (state == "ground") { anim.spritesheet = plant.ground; } if (state == "small") { anim.spritesheet = plant.small; } if (state == "medium") { anim.spritesheet = plant.medium; } if (state == "large") { anim.spritesheet = plant.large; } }
void Start() { DStat stat = DGameSystem.LoadStat(npcSpriteSheetName); if (GetComponent <DMovement>() != null) { GetComponent <DMovement>().data = stat; } if (GetComponent <DBattle>() != null) { GetComponent <DBattle>().stat = stat; } if (GetComponent <DFollow>() != null) { GetComponent <DFollow>().data = stat; } }
public void GetHit(DHitParam hit) { float calculatedDame = DGameSystem.pokemonSystem.CalculateReceiveDame(hit, stat); GameObject flyingtext = DGameSystem.LoadPool("TextDame", transform.position); flyingtext.GetComponent <TextMeshPro>().text = Convert.ToInt32(calculatedDame).ToString(); current.hp -= calculatedDame; UpdateHealthBar(); if (current.hp <= 0) { DGameSystem.LoadPool("Ghost", transform.position); gameObject.SetActive(false); } Debug.Log(gameObject.name + " get hit from " + hit.owner.name); }
public void Attack() { Quaternion quaternion = Quaternion.Euler(0, 0, 0); switch (GetComponent <DMovement>().Facing) { case "up": quaternion = Quaternion.Euler(0, 0, 90); break; case "down": quaternion = Quaternion.Euler(0, 0, 270); break; case "left": quaternion = Quaternion.Euler(0, 0, 180); break; case "right": quaternion = Quaternion.Euler(0, 0, 0); break; default: quaternion = Quaternion.Euler(0, 0, 0); break; } GameObject attack = DGameSystem.LoadPool("Attack", transform.position); attack.transform.rotation = quaternion; attack.GetComponent <DHitParam>().dame = current.dame; attack.GetComponent <DHitParam>().owner = this.gameObject; attack.GetComponent <DHitParam>().ownerTag = this.gameObject.tag; if (gameObject.tag == "Player") { string facing = GetComponent <DMovement>().Facing; Sprite[] attacks = GetComponent <DMovement>().ConvertStringToSprites("attack_" + facing); GetComponent <DAnimator>().spritesheet = attacks; //GetComponent<DAnimator>().attacking = true; } }
public void ExecuteAttack() { GameObject attackObj = DGameSystem.LoadPool(stat.attackObjectName, transform.position); attackObj.transform.rotation = Quaternion.Euler(0, 0, 0); DHitParam hitParam = new DHitParam(); hitParam.dame = current.dame; hitParam.owner = gameObject; hitParam.ownerTag = gameObject.tag; if (gameObject.tag == "Player") { hitParam.direction = GetComponent <DMovement>().Facing; } else { hitParam.target = GetComponent <DFollow>().enemy; hitParam.direction = GetComponent <DFollow>().direction; } attackObj.SendMessage("ReceiveParam", hitParam, SendMessageOptions.DontRequireReceiver); }
public IEnumerator WildPokemonAppear() { rb2d.velocity = Vector2.zero; GetComponent <DControlByJoystick>().enabled = false; GameObject effect = DGameSystem.LoadPool("BlackScreenEffect", transform.position); effect.transform.SetParent(DGameSystem.cameraMain.transform); yield return(new WaitForSeconds(2)); //DGameSystem.SwitchControlToPokemon(); DGameSystem.pokemonControl.SetActive(true); DGameSystem.cameraScript.MoveTo(DGameSystem.pokemonEnemy.transform); DGameSystem.cameraScript.target = DGameSystem.pokemonEnemy; DScriptDialog dialog = new DScriptDialog(); dialog.sentences = new List <string> { "A wild pokemon appeared!" }; DGamePauser.StartScripts(new DScriptDialog[] { dialog }); yield return(new WaitForSeconds(2)); dialog = new DScriptDialog(); dialog.sentences = new List <string> { "Go my pokemon!" }; DGamePauser.StartScripts(new DScriptDialog[] { dialog }); DGameSystem.cameraScript.target = DGameSystem.pokemonControl; yield return(new WaitForSeconds(1)); DGamePauser.state = DGamePauser.STATE.FREE; }
public void Buy() { if (currentSelect == -1) { return; } if (items[currentSelect] == null) { return; } if (DGameSystem.money < items[currentSelect].priceGold) { Debug.Log("Not enough money!"); } else if (DGameSystem.inventory.CheckItemSlot(items[currentSelect]) == false) { Debug.Log("Have no more inventory slot!"); } else { DGameSystem.SpendMoney(items[currentSelect].priceGold); DGameSystem.inventory.Add(items[currentSelect]); } }
public override void Interact() { DGameSystem.SwitchControlToPlayer(); }
void UpdatePool() { if (DGameSystem.player == null) { return; } List <int> seen = new List <int>(); List <int> unseen = new List <int>(); for (int i = 0; i < mapObjects.Count; i++) { if (Vector3.Distance(mapObjects[i].position, DGameSystem.player.transform.position) < SEEN_RANGE) { seen.Add(i); } else { unseen.Add(i); } } // Scan poolIndexs để biết được object nào seen, object nào unseen for (int i = 0; i < poolIndexs.Count; i++) { if (seen.Contains(poolIndexs[i])) { poolSeens[i] = "seen"; } else { poolSeens[i] = "unseen"; } } for (int i = 0; i < seen.Count; i++) { // Nếu poolIndexs không chứa seen[i] (xuất hiện mới), tìm trong unseen object có name tương tự // để change vị trí cho vật xuất hiện mới // Trường hợp không tìm thấy thì tạo object mới và thêm vào pool if (!poolIndexs.Contains(seen[i])) { int index = seen[i]; bool found = false; for (int j = 0; j < poolSeens.Count; j++) { if (poolSeens[j] == "unseen" && pools[j].objectName == mapObjects[index].objectName) { pools[j].gameObject.transform.position = mapObjects[index].position; poolSeens[j] = "seen"; poolIndexs[j] = index; found = true; break; } } if (!found) { GameObject obj = DGameSystem.LoadPool(mapObjects[index].objectName, mapObjects[index].position); MapObject mapObj = mapObjects[index]; mapObj.gameObject = obj; pools.Add(mapObj); poolIndexs.Add(index); poolSeens.Add("seen"); } } } }
private void Update() { if (owner == null) { enemyTag = "Player"; } else { enemyTag = "Monster"; } if (enemy != null) { if (Vector3.Distance(transform.position, enemy.transform.position) < visionRange) { state = STATE.ATTACK; } else { enemy = FindEnemy(enemyTag); if (enemy != null) { state = STATE.ATTACK; } else { state = STATE.FREE; } } } else { enemy = FindEnemy(enemyTag); if (enemy != null) { state = STATE.ATTACK; } else { state = STATE.FREE; } } if (state == STATE.ATTACK) { GetComponent <DMovementExecutor>().enabled = false; GetComponent <DMovement>().enabled = false; if (Vector3.Distance(transform.position, enemy.transform.position) < stat.attackRange) { GetComponent <DAnimator>().spritesheet = getSprite("attack", enemy); GetComponent <Rigidbody2D>().velocity = Vector3.zero; attackCount -= Time.deltaTime; if (attackCount < 0) { attackCount = stat.attackCountDown; GetComponent <DBattle>().ApplyDame(enemy); } } else { GetComponent <DAnimator>().spritesheet = getSprite("run", enemy); GetComponent <Rigidbody2D>().velocity = DGameSystem.GoToTargetVector(transform.position, enemy.transform.position, stat.speed * 1.5f); } } else // STATE == FREE { if (owner != null) { GetComponent <DAnimator>().spritesheet = getSprite("go", owner); GetComponent <Rigidbody2D>().velocity = DGameSystem.GoToTargetVector(transform.position, enemy.transform.position, stat.speed); } else { GetComponent <DMovementExecutor>().enabled = true; GetComponent <DMovement>().enabled = true; } } }