Member 13755707 Ответов: 0

XNA fps game question


Эй, мне нужен совет здесь, как я могу сделать более крупную карту из моего файла worldmap.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;

namespace FirstPersonCameraWindows.Models
{
    /// <summary>
    /// The world model.
    /// </summary>
    public class WorldModel : BaseWorldModel
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="WorldModel"/> class.
        /// </summary>
        /// <param name="content">The content manager.</param>
        /// <param name="graphicsDevice">The graphics device.</param>
        public WorldModel(ContentManager content, GraphicsDevice graphicsDevice)
            : base(content, graphicsDevice)
        {
        }

        #region BaseWorldModel members

        /// <summary>
        /// Initializes the world.
        /// </summary>
        protected override void initializeWorld()
        {
            Texture2D stonewall = Content.Load<Texture2D>("stonewall");
            Texture2D brickwall = Content.Load<Texture2D>("Stonefloor");
            Texture2D woodfine = Content.Load<Texture2D>("hellfloor");
            Texture2D stonefloor = Content.Load<Texture2D>("Stonefloor");
            Texture2D directx10 = Content.Load<Texture2D>("Directx10");

            // Basic walls
            addQuad(Vector3.Forward, 0, 50, 100, 600, 120, stonewall); // Back wall
            addQuad(Vector3.Backward, 0, 50, 110, 620, 120, stonewall);
            addQuad(Vector3.Up, 0, 110, 105, 620, 10, stonefloor);
            addQuad(Vector3.Right, -300, 50, -200, 600, 120, stonewall); // Left wall
            addQuad(Vector3.Left, -310, 50, -200, 620, 120, stonewall);
            addQuad(Vector3.Up, -305, 110, -200, 10, 600, stonefloor);
            addQuad(Vector3.Left, 300, 50, -200, 600, 120, stonewall); // Right wall
            addQuad(Vector3.Right, 310, 50, -200, 620, 120, stonewall);
            addQuad(Vector3.Up, 305, 110, -200, 10, 600, stonefloor);
            addQuad(Vector3.Backward, 0, 40, -499, 400, 100, brickwall); // Front wall
            addQuad(Vector3.Backward, 0, 95, -500, 600, 30, stonewall);
            addQuad(Vector3.Forward, 0, 50, -510, 620, 120, stonewall);
            addQuad(Vector3.Up, 0, 110, -505, 620, 10, stonefloor);

            addQuad(Vector3.Up, 0, 0, -200, 600, 600, woodfine); // 1. Floor
            addQuad(Vector3.Down, 0, -10, -200, 620, 620, woodfine);
            addQuad(Vector3.Down, 0, 90, -380, 360, 240, stonefloor); // Roof
            addQuad(Vector3.Backward, 0, 95, -260, 400, 10, stonewall); // Between roof and 2. floor
            addQuad(Vector3.Up, 0, 100, -380, 400, 240, stonefloor); // 2. Floor

            addQuad(Vector3.Left, -200, 50, -380, 240, 100, stonewall); // Left stairs walls
            addQuad(Vector3.Right, -180, 45, -380, 240, 90, brickwall);
            addQuad(Vector3.Backward, -190, 45, -260, 20, 90, stonewall);
            addQuad(Vector3.Right, 200, 50, -380, 240, 100, stonewall); // Right stairs walls
            addQuad(Vector3.Left, 180, 45, -380, 240, 90, brickwall);
            addQuad(Vector3.Backward, 190, 45, -260, 20, 90, stonewall);

            // Ramp
            Models.Add(new Quad(Device, stonefloor, new Vector3(-250, 45, -382), Vector3.Normalize(new Vector3(0f, 1.0f, angleToCot(70))), Vector3.Right, 260, 100));

            // Stairs
            for (int i = 1; i <= 12; i++)
            {
                addQuad(Vector3.Backward, 250, i * 8 - 4, -240 - i * 20, 100, 8, stonefloor); // Front wall
                addQuad(Vector3.Up, 250, i * 8, -250 - i * 20, 100, 20, stonefloor); // Floor
            }

            // The rotating box
            Models.Add(new BoxModel(Content, directx10, Matrix.CreateTranslation(0, 30, -320)));

            // Pistol
            Models.Add(new WeaponModel(Content, Matrix.CreateTranslation(0, 0, -250), "pistol"));
        }

        #endregion BaseWorldModel members

        // Adds a quad to the models.
        private void addQuad(Vector3 normal, float x, float y, float z, float width, float height, Texture2D texture)
        {
            Vector3 up = Vector3.Up;
            if (normal == Vector3.Up || normal == Vector3.Down)
            {
                up = Vector3.Backward;
            }

            Models.Add(new Quad(Device, texture, new Vector3(x, y, z), normal, up, width, height));
        }

        // Gets the cotangent of the given angle (in degrees).
        private float angleToCot(float deg)
        {
            return (float)(1.0 / Math.Tan(MathHelper.ToRadians(deg)));
        }
    }
}


Что я уже пробовал:

Я добавил несколько лестниц но это всего лишь лестница после пандуса

0 Ответов