/** * This will match a mobile opponent (an actor that doesn't yet have a destination) and a * stationary opponent (an actor that has a destination). The current usage context for this is * when multiple actors are attackking the stationaryActor. **/ private void MatchOpponents(Actor mobileActor, Actor stationaryActor, bool prevLocCacheRequired = false) { mobileActor.target = stationaryActor; stationaryActor.target = mobileActor; //We want to offset the y position of the stacked mobile actor int randSeed = Random.Range (1, 2) == 1 ? -1 : 1; stanceOffSetY *= randSeed; //We want to offset the x position of the stacked mobile actor float stanceOffSetXLocal = stanceOffSetX * stationaryActor.transform.localScale.x; Vector3 newVector = new Vector3 ((stationaryActor.endMarker.x + stanceOffSetXLocal), stationaryActor.endMarker.y+stanceOffSetY, stationaryActor.endMarker.z ); Vector3? cachedPrevious = null; if (prevLocCacheRequired) { cachedPrevious = mobileActor.prevLoc; } mobileActor.NewLocation (newVector); if (prevLocCacheRequired) { mobileActor.prevLoc = cachedPrevious.Value; } }
private void MatchOpponents(Actor player, Actor enemy, Vector3 coordinate) { Vector3 enemyCoordinate = new Vector3(coordinate.x -stanceOffSetX, coordinate.y, coordinate.z); Vector3 playerCoordinate = new Vector3(coordinate.x +stanceOffSetX, coordinate.y, coordinate.z); player.NewLocation(playerCoordinate); enemy.NewLocation(enemyCoordinate); player.target = enemy; enemy.target = player; }