Hi guys!!
I wanted to make an ocean with Isometric Tiles.
I found this JavaScript example here http://codepen.io/arnaudrocca/pen/reNpaP and I tried to port it to XNA/Monogame
My wave doesn't look good and I don't know what is wrong.
This is my whole code
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.IO;
namespace IsometricWaveDemo
{
/// <summary>
/// This is the main type for your game.
/// </summary>
public class Game1 : Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Texture2D tileTex;
float min = 1.25f;
int mapSize = 12;
int width = 50;
int height = 25;
int speed = 5;
int strength = 2;
char direction = 'x';
float timer = 0;
float deltaTime = 0;
float lastTime = 0;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
graphics.PreferredBackBufferHeight = 900;
graphics.PreferredBackBufferWidth = 1600;
}
protected override void Initialize()
{
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
FileStream fs = new FileStream("Content\\water4.png", FileMode.Open);
tileTex = Texture2D.FromStream(GraphicsDevice,fs);
fs.Close();
}
protected override void Update(GameTime gameTime)
{
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
deltaTime = (float)gameTime.TotalGameTime.TotalMilliseconds - lastTime;
lastTime = (float)gameTime.TotalGameTime.TotalMilliseconds;
timer += speed * deltaTime / 1000;
for (int x = 0; x < mapSize; x++)
{
for(int y= 0; y < mapSize; y++)
{
float z = 0;
if (direction == 'x')
{
z = (float)(min + Math.Sin(timer + Math.Sin((y - x) * strength / 10)));
}
else
{
z = (float)(min + Math.Cos(timer + Math.Cos((x + y) * strength / 10)));
}
spriteBatch.Draw(tileTex, new Rectangle(400 + (x - y) * width / 2, 200 + (int)((x + y - z) * height / 2), width, height), Color.White);
}
}
spriteBatch.End();
base.Draw(gameTime);
}
}
}
I attached the tile which I used. Can someone help me?