fi en fi en en en de en en en en es en en en fi en en en en en zh sv en fr tt de en de en fr fi fr fa fr ja sv ru en fr fr en ceb ja fr fr fi de fi fr es fi nb fr fi de fi en en fi sv de en de en fr en ru fr ceb it en fr de fi fr fi fr fr fi fr en fr en fr kn fr fr fi en ceb fr fi fr fi it fi fr fi en fi fr fr de ru fr kn fr fr fi fr ceb fr fi fr fi de en fr es fr ja fr ja nl kn fr de fi fr ceb fr fi fr it fr fi pt fi fr fi fr es fr sv de fi da fi fr kn zh fr fi fr ceb fr fi en fi fr fi fr fi fr fi da fi fr fi fr kn fr fr fi fr ceb fr fi fr en fr en fi da fi zh fi fr de fi fr fr fi fr fi fr fi fr fr fi da kn oc oc et oc ceb oc lv en kn en zh fi zh ceb fr lv de kn fr fr fi oc ceb fr fi fr fi fr de fr kn fr fr el fr el fr el fr el fr fr es fr fr en fr en hbs_lat en oc oc en fr en zh en fr fr en de en oc oc lt oc en fr oc en oc ru ca fr fa ca ceb de fa fr en fr fr en fr it da en fr ko oc it fr it fr fr fi fr en fr en de fr fi oc en fr oc fi oc en ca kn fr fr ru fr ceb oc fi fr de fi fr ca ca en fr lt fr ca en fr en fr en fr fi fr fi oc es fr ceb ca en fr kn fr fi fr ceb oc en oc kn fr kn fr oc en oc ceb ca lt fr en fr fr en oc en fr fr fi ca sv nb sv zh sv zh zh ja zh ceb zh ja zh ceb zh en zh en zh en fr en zh en ca oc ru oc fr en oc en fr en zh en fr en fr kn de en fr kn oc kn fr kn en en en en en en en en
Revision 7398, 8.0 KB checked in by sieerinn, 6 years ago (diff)
public class Tasohyppelypeli : PhysicsGame
const double nopeus = 200;
const double hyppyNopeus = 750;
const int RUUDUN_KOKO = 40;
List  tasot = new List ();
List  tahdet = new List ();
Gravity = new Vector(0, -1000);
void LisaaTaso(Vector paikka, double leveys, double korkeus)
PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
void LisaaTahti(Vector paikka, double leveys, double korkeus)
PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
tahti.Destroyed += () => tahdet.Remove(tahti);
void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
pelaaja1 = new PlatformCharacter(leveys, korkeus);
Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
void Liikuta(PlatformCharacter hahmo, double nopeus)
void Hyppaa(PlatformCharacter hahmo, double nopeus)
void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
/****************   Here be dragons    ******************/
Vector3 cameraStartPos = new Vector3(50f, 0f, 0f);
Vector3 cameraPos = new Vector3(50f, 0f, 0f);
float matrixLerp = 0f;
float cameraRotation = 0f;
bool perspective = false;
bool light = false;
protected override void LoadContent()
norsuModel = Content.Load ("norsu2");
tasoModel = Content.Load ("taso");
tahtiModel = Content.Load ("tahti2");
norsuTexture = Content.Load ("norsu");
vihreaTexture = Content.Load ("vihrea");
tahtiTexture = Content.Load ("tahti");
// A ja D pyörittää maailmaa.
Keyboard.Listen(Key.A, ButtonState.Down, () => { cameraRotation += 0.005f; }, null);
Keyboard.Listen(Key.D, ButtonState.Down, () => { cameraRotation -= 0.005f; }, null);
// Välilyönti vaihtaa ortogonaali- ja perspektiivinäkymän väliltä.
Keyboard.Listen(Key.Space, ButtonState.Pressed, () => { perspective = !perspective; }, null);
// F12 laittaa päälle valaistuksen.
Keyboard.Listen(Key.F12, ButtonState.Pressed, () => { light = !light; }, null);
protected override void Draw(Microsoft.Xna.Framework.GameTime gameTime)
base.Draw(gameTime); // Piirretään se mitä Jypeli jutut ensin.
// Sulava muunnos projektiomatriisien välille.
float dir = perspective ? 1f : -1f;
matrixLerp += dir * 0.3f * (float)gameTime.ElapsedGameTime.TotalSeconds;
matrixLerp = MathHelper.Clamp(matrixLerp, 0f, 1f);
cameraPos = Vector3.Transform(cameraStartPos, Matrix.CreateRotationY(cameraRotation));
// Piirretään 3D-mallit päälle.
foreach (var taso in tasot)
foreach (var tahti in tahdet)
void DrawModel(Model model, Texture2D tex, Vector jypeliPos)
var transforms = new Matrix[model.Bones.Count];
var screenPos = Camera.WorldToScreen(jypeliPos);
var modelPosition = 0.022f * new Vector3(0f, (float)screenPos.Y, (float)-screenPos.X);
// Projektiomatriisin interpolointi ortogonaalin ja perspektiivin väliltä.
var perspMat = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(30.0f), aspectRatio, 1.0f, 1000.0f);
var ortMat = Matrix.CreateOrthographic(25f * aspectRatio, 25f, 0.1f, 100f);
var finalMat = Matrix.Lerp(ortMat, perspMat, matrixLerp);
foreach (ModelMesh mesh in model.Meshes)
foreach (BasicEffect effect in mesh.Effects)
effect.AmbientLightColor = new Vector3(5f, 5f, 5f);
effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateRotationY(0f) * Matrix.CreateTranslation(modelPosition);
effect.View = Matrix.CreateLookAt(cameraPos, Vector3.Zero, Vector3.Up);
Note: See TracBrowser for help on using the repository browser.
Download in other formats:
Powered by Trac 0.12.5
Visit the Trac open source project at