public void AirDropAt(Vector3 position, float speed = 50f, float height = 400f) { float worldSize = (float)(global::World.Size - (global::World.Size / 7)); Vector3 zero = Vector3.zero; BaseEntity baseEntity = GameManager.server.CreateEntity("assets/prefabs/npc/cargo plane/cargo_plane.prefab", default(Vector3), default(Quaternion)); if (baseEntity) { baseEntity.Spawn(true); } CargoPlane cp = baseEntity.GetComponent <CargoPlane>(); Vector3 startPos = zero, endPos = zero; float secsToTake; float rand = (float)(worldSize * UnityEngine.Random.Range(0.4f, 1.2f)); while (startPos.x == 0 || startPos.z == 0) { startPos = Vector3Ex.Range(-rand, rand); } startPos.y = height; endPos = position + (position - startPos); endPos.y = height; secsToTake = Vector3.Distance(startPos, endPos) / speed; cp.SetFieldValue("startPos", startPos); cp.SetFieldValue("endPos", endPos); cp.SetFieldValue("secondsToTake", secsToTake); cp.transform.rotation = Quaternion.LookRotation(endPos - startPos); baseEntity.Spawn(true); }
public void AirDrop(float speed, float height = 400f) { BaseEntity baseEntity = GameManager.server.CreateEntity("assets/prefabs/npc/cargo plane/cargo_plane.prefab", default(Vector3), default(Quaternion)); if (baseEntity) { baseEntity.Spawn(true); } CargoPlane cp = baseEntity.GetComponent <CargoPlane>(); Vector3 start = (Vector3)cp.GetFieldValue("startPos"); Vector3 end = (Vector3)cp.GetFieldValue("endPos"); start.y = height; end.y = height; cp.SetFieldValue("secondsToTake", Vector3.Distance(start, end) / speed); cp.SetFieldValue("startPos", start); cp.SetFieldValue("endPos", end); }