/************* Called externally ***********************/ // called before the UFO really does anything. Lets the UFO know who the target is public void SetPlayer(Player player) { player_to_respawn = player; state = UFOForm.FlyingTowards; players_original_parent = player.transform.parent; players_original_layer = player.gameObject.layer; player_to_respawn.gameObject.layer = LayerMask.NameToLayer("TransparentFX"); }
// when the UFO is flying towards a player that has fallen off the ship void FlyingTowardsUpdate() { transform.position = Vector3.Lerp(transform.position, player_to_respawn.transform.position, Time.deltaTime * 0.8f); if (Vector3.Distance(transform.position, player_to_respawn.transform.position) <= GRABBING_THRESHOLD) { state = UFOForm.Towing; transform.position = player_to_respawn.transform.position; player_to_respawn.transform.SetParent(transform); player_to_respawn.transform.localPosition = HELD_POS; } }
// when the UFO is towing a player back to the core of the ship void TowingUpdate() { transform.position = Vector3.Lerp(transform.position, Utils.GetCorePosition(player_to_respawn.teamNum), Time.deltaTime * 1.5f); if (Vector3.Distance(transform.position, Utils.GetCorePosition(player_to_respawn.teamNum)) <= DROPPING_THRESHOLD) { player_to_respawn.transform.SetParent(players_original_parent); player_to_respawn.gameObject.layer = players_original_layer; player_to_respawn.GetComponent <Rigidbody2D>().gravityScale = 2f; player_to_respawn.form = PlayerForm.Normal; state = UFOForm.FlyingAway; } }