public IEnumerator arrowAttack(GameObject enemy) { shooting = true; unitMovement = unit.GetComponent <unitMovement>(); while (enemy != null) { unitMovement.rotateCoroutine = StartCoroutine(unitMovement.turnTowards(unit, enemy.transform.position)); if (Vector3.Distance(unit.transform.position, enemy.transform.position) > Mathf.Abs(range)) { while (enemy != null && Vector3.Distance(unit.transform.position, enemy.transform.position) > Mathf.Abs(range)) { unit.transform.position = Vector3.MoveTowards(unit.transform.position, enemy.transform.position, unitMovement.speed * Time.deltaTime); yield return(new WaitForEndOfFrame()); } } attackCooldown = Time.time - lastAttackTime; if (attackCooldown >= 1f / attackSpeed && enemy != null) { lastAttackTime = Time.time; Vector3 Vo = calculateVelocity(enemy.transform.position, unit.transform.GetChild(1).position, 1f); GameObject spawn = Instantiate(arrowPrefab, arrowSpawn.position, Quaternion.identity); Rigidbody rb = spawn.GetComponent <Rigidbody>(); rb.transform.rotation = Quaternion.Euler(transform.rotation.x, transform.rotation.y, transform.rotation.z); rb.velocity = Vo; } yield return(new WaitForEndOfFrame()); } shooting = false; yield return(null); }
public IEnumerator attack(GameObject enemy) { isAttacking = true; unitMovement = gameObject.GetComponent <unitMovement>(); while (enemy != null) { unitMovement.rotateCoroutine = StartCoroutine(unitMovement.turnTowards(gameObject, enemy.transform.position)); if (Vector3.Distance(transform.position, enemy.transform.position) > Mathf.Abs(range)) { while (enemy != null && Vector3.Distance(transform.position, enemy.transform.position) > Mathf.Abs(range)) { transform.position = Vector3.MoveTowards(gameObject.transform.position, enemy.transform.position, unitMovement.speed * Time.deltaTime); yield return(new WaitForEndOfFrame()); } } attackCooldown = Time.time - lastAttackTime; if (attackCooldown >= 1f / attackSpeed && enemy != null) { lastAttackTime = Time.time; enemyUnitMovement = enemy.GetComponent <unitMovement>(); enemyUnitMovement.health -= unitMovement.attack; // anim = GetComponent<Animation>(); // anim.Play(); } yield return(new WaitForEndOfFrame()); } isAttacking = false; yield return(null); }
// Use this for initialization void Start() { emotion = "normal"; bodyRenderer = transform.Find("img/body").GetComponent <SpriteRenderer>(); hairRenderer = transform.Find("img/hair").GetComponent <SpriteRenderer>(); headRenderer = transform.Find("img/head").GetComponent <SpriteRenderer>(); //shadowRenderer = transform.Find("img/shadow").GetComponent<SpriteRenderer>(); mainImg = transform.Find("img").gameObject; m_collider = GetComponent <BoxCollider>(); //shadowRenderer.sprite = SpManager.Instance.LoadSprite("shadow"); //bodyRenderer.color = m_manager.skinColor; //bodyRenderer.material.SetColor("_Color", m_manager.skinColor); if (hasHead) { //headRenderer.color = m_manager.skinColor; //headRenderer.material.SetColor("_Color", m_manager.skinColor); } else { headRenderer.enabled = false; hairRenderer.enabled = false; } m_umovement = GetComponent <unitMovement>(); Update(); m_manager.m_setFinish = true; }
public void spawn() { skinColor = utils.Instance.getSkinColor(skinColorId); m_Instance = UnityEngine.Object.Instantiate(Resources.Load("Prefab/unit"), m_pos, new Quaternion(0, 0, 0, 0)) as GameObject; m_Instance.transform.parent = GameObject.Find("units").transform; m_movement = m_Instance.GetComponent <unitMovement>(); m_skin = m_Instance.GetComponent <unitSkin>(); m_unitUI = m_Instance.GetComponent <unitUI>(); m_movement.init(this); m_skin.init(this); m_unitUI.init(this); ai.init(this); }
private void Stick(Collision enemy) { myBody.constraints = RigidbodyConstraints.FreezeAll; if (enemy.collider.tag == "Enemy") { crossbowman = GameObject.Find("Crossbowman"); unitMovement = crossbowman.GetComponent <unitMovement>(); totalEnemy = enemy.gameObject; enemyMovement = totalEnemy.GetComponent <unitMovement>(); myBody.transform.parent = enemy.transform; enemyMovement.health -= unitMovement.attack; } }
public void spawn(int x, int y) { Vector3 v = GSceneMap.Instance.gridToWorldPosition(new GridID(x, y)); grid = new GridID(x, y); m_pos = v; m_Instance = UnityEngine.Object.Instantiate(Resources.Load("Prefab/unit"), v, new Quaternion(0, 0, 0, 0)) as GameObject; m_Instance.transform.parent = GameObject.Find("units").transform; m_movement = m_Instance.GetComponent <unitMovement>(); m_skin = m_Instance.GetComponent <unitSkin>(); m_unitUI = m_Instance.GetComponent <unitUI>(); m_movement.init(this); m_skin.init(this); m_unitUI.init(this); }
// Update is called once per frame void Update() { if (Input.GetKey(swordsmanSpawnHotkey)) { fTrue = true; hotKey = false; moveAttack = false; } if (Input.GetKey(crossbowmanSpawnHotkey)) { hotKey = true; fTrue = false; moveAttack = false; } if (Input.GetKey(KeyCode.Tab)) { moveAttack = true; fTrue = false; hotKey = false; } if (Input.GetMouseButtonDown(0)) { mousePoint = mouseMousePoint(); startPos = mousePoint; startPos.y -= .5f; mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition); if (fTrue) { Instantiate(SwordsmanPrefab, mousePoint, Quaternion.identity); fTrue = false; } else if (hotKey) { Instantiate(CrossbowmanPrefab, mousePoint, Quaternion.identity); hotKey = false; } else if (moveAttack) { moveAttack = false; } hitObject = isObjectSelected(); if (Input.GetKey(KeyCode.LeftControl)) { if (hitObject.tag == "unit") { // UI changes to unit stats foreach (GameObject obj in selectedObjects) { if (obj == hitObject) { hasSelected = true; } } if (hasSelected == true) { selectedObjects.Remove(hitObject); hasSelected = false; } else { selectedObjects.Add(hitObject); } } else if (hitObject.tag == "enemy") { // UI changes to enemy unit stats selectedObjects.Clear(); } } else { if (hitObject.tag == "unit") { if (lastSelectedUnit == hitObject) { secondSelect = Time.time; if (secondSelect - firstSelect <= 1) { // bool firstObject = true; foreach (GameObject selectable in selectableObjects) { if (selectable.name == hitObject.name) { selectedObjects.Add(selectable); } } } } else { selectedObjects.Clear(); selectedObjects.Add(hitObject); unitMovement = hitObject.GetComponent <unitMovement>(); unitMovement.setVisible(); currentlySelected += 1; } firstSelect = Time.time; lastSelectedUnit = hitObject; } else { selectedObjects.Clear(); lastSelectedUnit = null; } } } if (Input.GetMouseButtonUp(0)) { selectSquareImage.gameObject.SetActive(false); } if (Input.GetMouseButton(0)) { if (!selectSquareImage.gameObject.activeInHierarchy) { selectSquareImage.gameObject.SetActive(true); } endPos = Input.mousePosition; Vector3 squareStart = Camera.main.WorldToScreenPoint(startPos); squareStart.z = 0f; Vector3 centre = (squareStart + endPos) / 2f; selectSquareImage.position = centre; float sizeX = Mathf.Abs(squareStart.x - endPos.x); float sizeY = Mathf.Abs(squareStart.y - endPos.y); selectSquareImage.sizeDelta = new Vector2(sizeX, sizeY); mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition); if (mousePos1 != mousePos2) { selectObjects(); } } if (Input.GetMouseButtonDown(1)) { if (hitObject != null) { if (selectedObjects.Count > 0) { for (int i = 0; i < selectedObjects.Count; i++) { unitMovement = selectedObjects[i].GetComponent <unitMovement>(); unitMovement.findAction(); } } } } if (selectedObjects.Count != currentlySelected) { foreach (GameObject selectable in selectableObjects) { unitMovement = selectable.GetComponent <unitMovement>(); unitMovement.setInvisible(); currentlySelected = 0; } foreach (GameObject selected in selectedObjects) { unitMovement = selected.GetComponent <unitMovement>(); unitMovement.setVisible(); currentlySelected += 1; } } }