'Sunmoon_BIT/XNA 3.1'에 해당되는 글 4건
- 2010.07.05 XNA 3.1 실시간 해상도 변경하기
- 2010.06.10 XNA 객체 투명하게만들기
- 2010.06.10 XNA 3D객체 충돌감지 테스트
- 2010.06.02 XNA의 DRAW함수를 사용하여 2D객체 회전
// 현재 키보드 입력 상태 확인
KeyboardState currentKeyboardState = Keyboard.GetState();
// 그래픽 장치 설정 변경 요청 확인
if (currentKeyboardState.IsKeyDown(Keys.Enter))
{
// 그래픽 장치 설정 변경
// 해상도 설정
graphics.PreferredBackBufferWidth = 400;
graphics.PreferredBackBufferHeight = 300;
// 전체 화면 설정
graphics.IsFullScreen = true;
// 그래픽 장치 설정 적용
graphics.ApplyChanges();
}
'Sunmoon_BIT > XNA 3.1' 카테고리의 다른 글
XNA 객체 투명하게만들기 (0) | 2010.06.10 |
---|---|
XNA 3D객체 충돌감지 테스트 (0) | 2010.06.10 |
XNA의 DRAW함수를 사용하여 2D객체 회전 (0) | 2010.06.02 |
코드내에 Draw(GameTime gameTime)
//아마도 렌더스테이트에다가 알파값을 사용하겠다고 선언하는 것 같아요.
GraphicsDevice.RenderState.BlendFunction = BlendFunction.Add;
GraphicsDevice.RenderState.AlphaBlendEnable = true;
GraphicsDevice.RenderState.SourceBlend = Blend.SourceAlpha;
GraphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha;
//그리고 Model Drawing 부분에서도 알파값을 1.0f 가 완전 불투명 0.0f가 완전 투명이라 했을때 중간 값을 넣으시면
그만큼 충분한 투명값을 얻을 수 있습니다.
Matrix[] transforms = new Matrix[darwin.model.Bones.Count];
darwin.model.CopyAbsoluteBoneTransformsTo(transforms);
foreach (ModelMesh mesh in darwin.model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.Alpha = alpha;//이 부분처럼 써주시면 됩니다. 알파값을 설정해주시면 돼요ㅎ 현재 알파변수는 0.3f입니다
effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateRotationY(darwin.rotation) * Matrix.CreateTranslation(darwin.position);
effect.View = arcCamera.View;
effect.Projection = arcCamera.Projection;
}
mesh.Draw();
}
이렇게 하시면 결과물로 투명한 유리인 아래 사진 같은 결과를 얻을 수 있습니다.
[출처] XNA에서 오브젝트 투명하게 띄우기(유리) (XNA | Game Studio Express) |작성자 부퍼엉
'Sunmoon_BIT > XNA 3.1' 카테고리의 다른 글
XNA 3.1 실시간 해상도 변경하기 (0) | 2010.07.05 |
---|---|
XNA 3D객체 충돌감지 테스트 (0) | 2010.06.10 |
XNA의 DRAW함수를 사용하여 2D객체 회전 (0) | 2010.06.02 |
XNA 3D객체 충돌감지 테스트
생성된 여러가지 객체의 충돌을 감지하기 위해서 for-each문을 사용한다.
이 방법을 사용하면 생성된 객체(배열로 선언)한 모든객체를 검사하며 충돌을 감지한다
Void TestCollision(GameObject obj) { BoundingSphere objSphere = obj.model.Meshes[0].BoundingSphere; //GameObject형태의 obj의 첫번째 매쉬와 똑 같은 구를 선언 objSphere.Center = obj.position; //생성된 구의 원점은 인자로 받은 객체의 위치 objSphere.Radius *= obj.scale; //생성된 구의 반지름은 인자로 받은 객체의 크기와 같게 //객체의 집합의 모든 객체에 대하여 Foreach(GameObject object in ObjectArr) { If(object.alive)//객체가 살아있다면 { objSphere2.Center = object.position; objSphere2.Radius *= object.scale; if(objSphere2.Intersects(objSpherer) //생성된 2개의 구를 충돌감지 하는 함수 { //충돌시 행동코드 입력 } } { } } } |
이 함수를 Update시 객체를 선택하여 이동시킬때마다 호출
'Sunmoon_BIT > XNA 3.1' 카테고리의 다른 글
XNA 3.1 실시간 해상도 변경하기 (0) | 2010.07.05 |
---|---|
XNA 객체 투명하게만들기 (0) | 2010.06.10 |
XNA의 DRAW함수를 사용하여 2D객체 회전 (0) | 2010.06.02 |
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;//0.016.....
RotationAngle += elapsed;
float circle = MathHelper.Pi * 2;
RotationAngle = RotationAngle % circle;
(1초에 60프레임으로 설정되어있으므로 0.016...이 나올 것이다)
float형태의 RotationAngle변수에 += 해준다
(1초에 60번씩 0.016...을 더한수가 저장된다)
float형태의 circle형태에 1회전시킬것이므로 파이x2를 한다
(반만 회전하려면 파이) -> 수학적인 부분은 잘 모르겠다..
RotationAngle에 circle값을 나눈 나머지값을 저장한다
spriteBatch.Draw(SpriteTexture, screenpos, null, Color.White, RotationAngle, origin, 1.0f, SpriteEffects.None, 0f);
'Sunmoon_BIT > XNA 3.1' 카테고리의 다른 글
XNA 3.1 실시간 해상도 변경하기 (0) | 2010.07.05 |
---|---|
XNA 객체 투명하게만들기 (0) | 2010.06.10 |
XNA 3D객체 충돌감지 테스트 (0) | 2010.06.10 |