示例#1
0
        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);
        }
示例#2
0
        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);
        }