(0, 1, 0))); (keyboardState.IsKeyDown (Keys.Q) == true)// вниз = Matrix.Multiply (viewMatrix, Matrix. CreateTranslation (new Vector3 (0, -1, 0))); (keyboardState.IsKeyDown (Keys.S) == true)// ближче = Matrix.Multiply (viewMatrix, Matrix.CreateTranslation (new Vector3 (0, 0, - 1))); (keyboardState.IsKeyDown (Keys.W) == true)// далі = Matrix.Multiply (viewMatrix, Ma trix.CreateTranslation (new Vector3 (0, 0, 1)));
// Матриця m задає положення спостерігача щодо об'єкта (стінки) m = Matrix.Multiply (worldMatrix, Matrix.Invert (viewMatrix));
// Задаємо вектор напрямку погляду з точки розташування наблюдателяr = new Ray (m.Translation, m.Forward);
// Визначаємо перетин погляду спостерігача з коробкою навколо об'єкта (стінки)? f1 = b.Intersects (r); = (f1! = null) ;//Якщо d1 = true then тобто попадання
// Задаємо сферу навколо наблюдателяs = new BoundingSphere (m.Translation, 1.2f); = b.Intersects (s);// Якщо d2 = true then спостерігач близько до об'екту.Update (gameTime);
}
///
///This is called when the game should draw itself.
///
/// Provides a snapshot of timing values. override void Draw (GameTime gameTime)
{
// TODO: Add your drawing code here (d2)// Фон червоний, якщо спостерігач близько до об'єкта 1.Clear (Color.Red); (d1)// Фон жовтий, якщо спостерігач спрямований на об'єкт 1 (потрапить при пострілі). Clear (Color.Yellow) ;//Фон синій, якщо не потрапить в об'єкт 1 і не блізко.Clear (Color.CornflowerBlue);
// Задаємо облік глубины.GraphicsDevice.RenderState.DepthBufferEnable = true; (int i = 0; i <10; i + +)
{(ModelMesh mesh in modelMel.Meshes)
{(BasicEffect effect in mesh.Effects)
{. World = worldMel [i];// при малюванні млини треба врахувати тільки її рух. View = viewMatrix;. Projection = projectionMatrix;. Texture = null;. TextureEnabled = false;
}. Draw ();
}
} (int i = 0; i <10; i + +)
{(ModelMesh mesh in modelLop.Meshes)
{(BasicEffect effect in mesh.Effects)
{. World = worldLop [i];// при малюванні лопости треба врахувати тільки її рух. View = viewMatrix;. Projection = projectionMatrix;. Texture = null;. TextureEnabled = false;
}. Draw ();
}
}
// Малювання об'єкта 4 (стіна перпендикулярно напрямку погляду) (indz.Length> 0)
{. View = viewMatrix;. Projection = projectionMatrix;. World = worldMatrix;. Texture = e;. TextureEnabled = true;. Begin (); (EffectPass pass in effect.CurrentTechnique.Passes)
{. Begin ();. VertexDeclaration = new VertexDeclaration (GraphicsDevice, VertexPositionTexture.VertexElements);. DrawUserIndexedPrimitives (PrimitiveType.TriangleList, e1, 0, e1.Length, indz, 0, indz.Length/3);. End ();
}. End ();
}
// Малювання об'єкта 5 (стіна перпендикулярно напрямку погляду) (indz.Length> 0)