public void setAimLocationCallbacks(Transform aimStartPorint, IGetAim aimCallback, LocationUpdateType type) { startLocation = aimStartPorint; aimLocation = aimCallback; locationUpdateType = type; //static distance set in prefab }
private void updateAreaLocationAndRotoation() { if (startLocation == null) { Debug.Log("actor controlling this area is dead or inactive, destroying area"); destroyAreas(); return; } Vector2 aimLocation; Vector3 newLocation; Vector3 rot; switch (locationUpdateType) { case LocationUpdateType.None: break; case LocationUpdateType.SetLocation: this.aimLocation.getAim(out aimLocation); newLocation = aimLocation; newLocation.z = spriteLayer; transform.position = newLocation; // location derectly on aim locaiton //updateRotation rot = transform.eulerAngles; rot.z = startLocation.eulerAngles.z; transform.eulerAngles = rot; break; case LocationUpdateType.SetDistanceFromLocation: this.aimLocation.getAim(out aimLocation); Vector2 currentActorPosition = startLocation.position; //actor location aimLocation = aimLocation - currentActorPosition; // vector from actor to aim aimLocation = aimLocation.normalized * staticDistance; //Area damage location to aimLocation += currentActorPosition; // vector from (0,0) to correct area location newLocation = aimLocation; newLocation.z = spriteLayer; transform.position = newLocation; //updateRotation rot = transform.eulerAngles; rot.z = startLocation.eulerAngles.z; transform.eulerAngles = rot; break; default: break; } }
/// <summary> /// with set area distance /// </summary> /// <param name="aimStartPorint"></param> /// <param name="aimCallback"></param> /// <param name="type"></param> /// <param name="distance"></param> public void setAimLocationCallbacks(Transform aimStartPorint, IGetAim aimCallback, LocationUpdateType type, float distance) { setAimLocationCallbacks(aimStartPorint, aimCallback, type); staticDistance = distance; }