TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Tilo Jung
1.7k
21
4.3k
collision detection xna
Sep 7 2017 11:31 AM
Hello to all,
I made a simple program, like described here:
https://jamessadlier.wordpress.com/tutorials/xna-4-0-collision-detection/
to detect a collision in XNA and to bounce the ball off the block and of the wall.
(I have a "pics" Folder where I have the both pictures: the ball and the block.) But nothing happens. The ball doesn't move at all. What am I doing wrong?
What I have tried:
I tried this code and read related literature
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
Microsoft.Xna.Framework;
using
Microsoft.Xna.Framework.Audio;
using
Microsoft.Xna.Framework.Content;
using
Microsoft.Xna.Framework.GamerServices;
using
Microsoft.Xna.Framework.Graphics;
using
Microsoft.Xna.Framework.Input;
using
Microsoft.Xna.Framework.Media;
namespace
game19Addition
{
// This is the main type for your game
public
class
Game1 : Microsoft.Xna.Framework.Game
{
//this class has a property: GraphicsDevice that represents the actual graphics device on your PC.
//everything you do on screen in your XNA games will run through this object
GraphicsDeviceManager graphics;
//this is the core object to to draw sprites(2d or 3d image inegrated into a large scene)
SpriteBatch spriteBatch;
Texture2D spriteTexture1;
Rectangle ballBounds;
Vector2 ballPosition;
Vector2 ballVelocity;
Texture2D spriteTexture2;
Rectangle blockBounds;
Vector2 blockPosition;
public
Game1()
{
graphics =
new
GraphicsDeviceManager(
this
);
Content.RootDirectory =
"Content"
;
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected
override
void
Initialize()
{
// TODO: Add your initialization logic here
base
.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected
override
void
LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch =
new
SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
ballPosition =
new
Vector2(
this
.GraphicsDevice.Viewport.Width / 2,
this
.GraphicsDevice.Viewport.Height * 0.25f);
ballVelocity =
new
Vector2(0, 1);
spriteTexture1 = Content.Load<Texture2D>(@
"pics/ball"
);
ballBounds =
new
Rectangle((
int
)(ballPosition.X - spriteTexture1.Width / 2),
(
int
)(ballPosition.Y - spriteTexture1.Height / 2),
spriteTexture1.Width,
spriteTexture1.Height);
blockPosition =
new
Vector2(
this
.GraphicsDevice.Viewport.Width / 2,
this
.GraphicsDevice.Viewport.Height * 0.75f);
spriteTexture2 = Content.Load<Texture2D>(@
"pics/block"
);
//create rectangles based off the size of the textures
blockBounds =
new
Rectangle((
int
)(blockPosition.X - spriteTexture2.Width / 2),
(
int
)(blockPosition.Y - spriteTexture2.Height / 2),
spriteTexture2.Width,
spriteTexture2.Height);
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected
override
void
UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected
override
void
Update(GameTime gameTime)
{
// Allows the game to exit
if
(Keyboard.GetState().IsKeyDown(Keys.F12))
this
.Exit();
// TODO: Add your update logic here
if
(ballBounds.Intersects(blockBounds) || !GraphicsDevice.Viewport.Bounds.Contains(ballBounds))
{
ballVelocity = -ballVelocity;
ballPosition += ballVelocity;
}
else
{
ballPosition += ballVelocity;
}
//update boundig boxes
ballBounds.X = (
int
)ballPosition.X;
blockBounds.Y = (
int
)ballPosition.Y;
blockPosition.X = (
int
)blockPosition.X;
blockPosition.Y = (
int
)blockPosition.Y;
base
.Update(gameTime);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected
override
void
Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.Draw(spriteTexture1, ballPosition, Color.White);
spriteBatch.Draw(spriteTexture2, blockPosition, Color.White);
spriteBatch.End();
base
.Draw(gameTime);
}
}
}
Reply
Answers (
0
)
Open source game development engine
`Instantiate' does not exist in current context.