void OnTriggerStay2D(Collider2D other) { if (other.tag == "UnitCenter") //적군일 때 { Unit colliderUnit = other.gameObject.GetComponent <UnitCenter>().unitScript; if (playerNumber == 1 && colliderUnit.getPlayerNumber() == 2) { setCheckCanMove(false); } else if (playerNumber == 2 && colliderUnit.getPlayerNumber() == 1) { setCheckCanMove(false); } } else if (other.tag == "Castle") //상대 성일 때 { CastleScript castle = other.gameObject.GetComponent <CastleScript>(); if (castle.playerNumber != playerNumber) { setCheckCanMove(false); } } }
void Start() { generatorScript = generator.GetComponent <EnemyGenerator>(); castleScript = castle.GetComponent <CastleScript>(); winTextObj.SetActive(false); winTime = timerToWin; StartCoroutine(PlayStartAnim()); }
public void SetParameters(SeekForce seekForce, CastleScript castle) { foreach (Transform waypoint in castle.waypoints) { m_waypoints.Add(waypoint.position); } m_seekForce = seekForce; m_currentWaypointNumber = 0; m_castle = castle; }
//적의 성을 공격 public virtual IEnumerator CastleAttack(CastleScript enemyCastle) { yield return(new WaitForSeconds(1)); enemyCastle.setCurrentCastleHP(enemyCastle.getCurrentCastleHP() - getDamage()); if (enemyCastle.getCurrentCastleHP() > 0) { StartCoroutine(CastleAttack(enemyCastle)); } else { checkCanMove = false; } }
public void Initialise(CastleScript castle, WorldGridScript world) { m_archeryCounter = new GameObject("Hover Archery Marker"); m_infantryCounter = new GameObject("Hover Infantry Marker"); m_cavalryCounter = new GameObject("Hover Cavalry Marker"); m_archeryCounter.transform.SetParent(transform); m_infantryCounter.transform.SetParent(transform); m_cavalryCounter.transform.SetParent(transform); Vector3 temp = gameObject.transform.position; m_archeryCounter.transform.position = temp; m_infantryCounter.transform.position = temp; m_cavalryCounter.transform.position = temp; MeshRenderer archeryMeshRenderer = m_archeryCounter.AddComponent<MeshRenderer>(); MeshFilter archeryMeshFilter = m_archeryCounter.AddComponent<MeshFilter>(); archeryMeshRenderer.sharedMaterial = world.CounterMaterial; archeryMeshFilter.mesh = world.ArcheryCounterMesh; MeshRenderer infantryMeshRenderer = m_infantryCounter.AddComponent<MeshRenderer>(); MeshFilter infantryMeshFilter = m_infantryCounter.AddComponent<MeshFilter>(); infantryMeshRenderer.sharedMaterial = world.CounterMaterial; infantryMeshFilter.mesh = world.InfantryCounterMesh; MeshRenderer cavalryMeshRenderer = m_cavalryCounter.AddComponent<MeshRenderer>(); MeshFilter cavalryMeshFilter = m_cavalryCounter.AddComponent<MeshFilter>(); cavalryMeshRenderer.sharedMaterial = world.CounterMaterial; cavalryMeshFilter.mesh = world.CavalryCounterMesh; m_cavalryCounter.AddComponent<MeshCollider>(); m_infantryCounter.AddComponent<MeshCollider>(); m_archeryCounter.AddComponent<MeshCollider>(); UnitSlider cavalry = m_cavalryCounter.AddComponent<UnitSlider>(); UnitSlider infantry = m_infantryCounter.AddComponent<UnitSlider>(); UnitSlider archery = m_archeryCounter.AddComponent<UnitSlider>(); infantry.Init(castle.infantryRecruitmentTiles); cavalry.Init(castle.cavalryRecruitmentTiles); archery.Init(castle.archeryRecruitmentTiles); m_castle = castle; }
//충돌되는 물체 감지 void OnTriggerEnter2D(Collider2D other) { if (other.tag == "UnitCenter") //적군일 때 { Unit colliderUnit = other.gameObject.GetComponent <UnitCenter>().unitScript; if (playerNumber == 1 && colliderUnit.getPlayerNumber() == 2) { setCheckCanMove(false); unitImage.color = new Color(unitImage.color.r, unitImage.color.g, unitImage.color.b, 255); hpGuageBar.SetActive(true); StartCoroutine(Attack(colliderUnit)); } else if (playerNumber == 2 && colliderUnit.getPlayerNumber() == 1) { setCheckCanMove(false); unitImage.color = new Color(unitImage.color.r, unitImage.color.g, unitImage.color.b, 255); hpGuageBar.SetActive(true); StartCoroutine(Attack(colliderUnit)); } } else if (other.tag == "Castle") //상대 성일 때 { CastleScript castle = other.gameObject.GetComponent <CastleScript>(); if (castle.playerNumber != playerNumber) { setCheckCanMove(false); unitImage.color = new Color(unitImage.color.r, unitImage.color.g, unitImage.color.b, 255); hpGuageBar.SetActive(true); StartCoroutine(CastleAttack(castle)); } } }
// Use this for initialization void Start() { castleScript = GameObject.FindGameObjectWithTag("Castle").GetComponent <CastleScript>(); image = GetComponent <Image>(); }
public override IEnumerator CastleAttack(CastleScript enemyCastle) { return(base.CastleAttack(enemyCastle)); }
// Use this for initialization void Start() { // Initialise behaviour list m_castleScript = FindObjectOfType <CastleScript>(); m_behaviours = new List <IBehaviour>(); m_body = GetComponent <Rigidbody>(); if (!m_animator) { m_animator = GetComponentInChildren <Animator> (); } //----------------------------------------------------------------- // The Castle Interaction Sequence // Set up the seek force and seek force parameter SeekForce m_castleSeekForce = new SeekForce(); m_castleSeekForce.m_rotationSpeed = turnSpeed; // Set waypoints foreach (Transform waypoint in waypoints) { waypointVectors.Add(waypoint.position); } // Set up the castle interaction behaviour CastleScript castle = FindObjectOfType <CastleScript>(); CastleInteractBehaviour castleInteract = new CastleInteractBehaviour(); castleInteract.SetParameters(m_castleSeekForce, castle); // Set up condition for castle interaction sequence CastleTouchedCondition castleCondition = new CastleTouchedCondition(); castleCondition.castleScript = castle; //Set up chase sequence Sequence castleSequence = new Sequence(); castleSequence.addBehaviour(castleCondition); castleSequence.addBehaviour(castleInteract); //----------------------------------------------------------------- // The Ball Interaction Sequence // Set up the seek force and seek force parameter SeekForce m_ballSeekForce = new SeekForce(); m_ballSeekForce.m_rotationSpeed = turnSpeed; // Set up the ball interaction behaviour if (!ball) { ball = FindObjectOfType <BallScript> (); } BallInteractBehaviour ballInteract = new BallInteractBehaviour(); ballInteract.SetParameters(ball, m_ballSeekForce, 10.0f, middleBallTarget); // Set up condition for ball interaction sequence BallTouchedCondition ballCondition = new BallTouchedCondition(); ballCondition.m_ball = ball; ballCondition.ballBehaviour = ballInteract; //Set up chase sequence Sequence ballSequence = new Sequence(); ballSequence.addBehaviour(ballCondition); ballSequence.addBehaviour(ballInteract); //----------------------------------------------------------------- // The Chase Sequence // Set up the seek force and seek force parameter /*SeekForce seekChase*/ m_seekForce = new SeekForce(); m_seekForce.SetTarget(player); // Set up the seek behaviour seekBehaviour = new SteeringBehaviour(); seekBehaviour.Constructor(); seekBehaviour.AddNewForce(m_seekForce); // Set up condition for chase sequence WaveCondition waveCondition = new WaveCondition(); //waveCondition.m_target = player; // Set up chase sequence Sequence chaseSequence = new Sequence(); chaseSequence.addBehaviour(waveCondition); chaseSequence.addBehaviour(seekBehaviour); //---------------------------------------------------------------- // The Wander Sequence // Set up seek force and seek parameter SeekForce seekWander = new SeekForce(); seekWander.m_rotationSpeed = turnSpeed; // Set up rotational force and arrival parameter RotationalForce rotationWander = new RotationalForce(); // Set up arrival force and arrival parameter ArrivalForce arrivalWander = new ArrivalForce(); arrivalWander.SetParameter(); // Set up wander behaviour LimitedWanderBehaviour wanderBehaviour = new LimitedWanderBehaviour(); wanderBehaviour.SetLimit(middlePoint, maxRadius, maxDepth); wanderBehaviour.SetForce(seekWander, rotationWander, arrivalWander); wanderBehaviour.nearEnough = m_waypointTolerance; //---------------------------------------------------------------- // The Main Selector // Set up main selector Selector mainSelector = new Selector(); mainSelector.addBehaviour(castleSequence); mainSelector.addBehaviour(ballSequence); mainSelector.addBehaviour(chaseSequence); mainSelector.addBehaviour(wanderBehaviour); // Add all sequences to behaviour list m_behaviours.Add(mainSelector); // Setting the forward direction transform.forward = new Vector3(0, 0, 1); }