public override void Render() { PreRender(); var velocidadCaminar = 50f * ElapsedTime; //Calcular proxima posicion de personaje segun Input var d3dInput = TgcD3dInput.Instance; var moving = false; var movement = new Vector3(0, 0, 0); //Adelante if (d3dInput.keyDown(Key.W)) { movement.Z = velocidadCaminar; moving = true; } //Atras if (d3dInput.keyDown(Key.S)) { movement.Z = -velocidadCaminar; moving = true; } //Derecha if (d3dInput.keyDown(Key.D)) { movement.X = velocidadCaminar; moving = true; } //Izquierda if (d3dInput.keyDown(Key.A)) { movement.X = -velocidadCaminar; moving = true; } //Salto if (d3dInput.keyDown(Key.Space)) { movement.Y = velocidadCaminar; moving = true; } //Agachar if (d3dInput.keyDown(Key.LeftControl)) { movement.Y = -velocidadCaminar; moving = true; } //Si hubo desplazamiento if (moving) { //Aplicar movimiento box.move(movement); } //Hacer que la camara siga al personaje en su nueva posicion camaraInterna.Target = box.Position; //Detectar colision con triangulo if (TgcCollisionUtils.testTriangleAABB(triangle[0].Position, triangle[1].Position, triangle[2].Position, box.BoundingBox)) { box.BoundingBox.render(); triagleAABB.render(); } //Detectar colision con el otro AABB if (TgcCollisionUtils.testAABBAABB(box.BoundingBox, box2.BoundingBox)) { box.BoundingBox.render(); box2.BoundingBox.render(); } //Detectar colision con la esfera if (TgcCollisionUtils.testSphereAABB(sphere, box.BoundingBox)) { box.BoundingBox.render(); sphere.setRenderColor(Color.Red); } else { sphere.setRenderColor(Color.Yellow); } //Detectar colision con la obb if (TgcCollisionUtils.testObbAABB(obb, box.BoundingBox)) { box.BoundingBox.render(); obb.setRenderColor(Color.Red); } else { obb.setRenderColor(Color.Yellow); } //Dibujar box.render(); box2.render(); sphere.render(); obb.render(); //triangulo D3DDevice.Instance.Device.Transform.World = Matrix.Identity; D3DDevice.Instance.Device.VertexFormat = CustomVertex.PositionColored.Format; D3DDevice.Instance.Device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle); PostRender(); }
public ObbCollider(TgcObb obb) { Obb = obb; _Extents = obb.Extents; obb.setRenderColor(DefaultColiderColor); }