c# việt nam - kiến thức - [xna] chuyển động của nhân vật trong xna
TRANSCRIPT
-
7/27/2019 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
1/6
06/05/2013 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
www.csharpvn.com/KienThuc_ChiTietKienThuc.aspx?Id=291
Kin thc Ti liu Video Sn phm Din n Vic lm
ng bi vit
Cng ngh
.Net Framework
Visual Studio
C# C Bn
Thut Ton
M Hnh Lp Trnh
C S D Liu
Giao Din Web
Asp.Net
Windows Forms
WPF
Metro
WCF
Lp Trnh Ha
Lp Trnh Mng
Lp Trnh Game
Lp Trnh Di ng
Lp Trnh Nhng
Tm kim
Nhp t kha:
Tm
Lin h
Mobile: 0977773310
Thnh vin
Thnh vin mi: kis_zero
Tng thnh vin: 21586
ang online: 8
Thnh vin online
7 khch v 1 thnh vinboyhcmc
[XNA] Chuyn ng ca nhn vt trong XNA
Lp Trnh Game
Hng dn ny s gip bn lm quen vi XNA v to chuyn ng nhnvt n gin
1.chun bdownload XNA game studio 3.1 t trang ca Microsoft ,ci t cho Visual studio 2008to 1 project mi : Visual C#->XNA 3.1->Windows game->OK
2.Sprite image 2D l g ?Sprite image 2D thc cht l 1 image tp hp tt c cc t th c bn ca nhn vt theo mt qui lutno v d v Sprite image
ng nhp | ng k
http://www.facebook.com/pages/Csharpvn/187268401413001?ref=tn_tnmnhttp://www.facebook.com/pages/Csharpvn/187268401413001?ref=tn_tnmnhttp://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1500http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1300http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1100http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=850http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=750http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=650http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=500http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=300http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=100http://www.csharpvn.com/DangKy.aspxhttp://www.csharpvn.com/DangNhap.aspxhttp://www.facebook.com/sharer/sharer.php?s=100&p[title]=%5bXNA%5d+Chuy%e1%bb%83n+%c4%91%e1%bb%99ng+c%e1%bb%a7a+nh%c3%a2n+v%e1%ba%adt+trong+XNA&p[url]=http://www.csharpvn.com/KienThuc_ChiTietKienThuc.aspx?Id=291&p[summary]=H%c6%b0%e1%bb%9bng+d%e1%ba%abn+n%c3%a0y+s%e1%ba%bd+gi%c3%bap+b%e1%ba%a1n+l%c3%a0m+quen+v%e1%bb%9bi+XNA+v%c3%a0+t%e1%ba%a1o+chuy%e1%bb%83n+%c4%91%e1%bb%99ng+nh%c3%a2n+v%e1%ba%adt+%c4%91%c6%a1n+gi%e1%ba%a3n&p[images][0]=http://i797.photobucket.com/albums/yy252/microstar2/image/XNA%20tut/2.png?t=1274527560http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1300http://www.facebook.com/pages/Csharpvn/187268401413001?ref=tn_tnmnhttp://__dopostback%28%27ctl00%24ctl00%24contentplaceholder1%24uctimkiem1%24linkbutton1%27%2C%27%27%29/http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1500http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1400http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1300http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1200http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1100http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=1000http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=850http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=800http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=750http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=700http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=650http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=550http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=500http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=400http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=300http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=200http://www.csharpvn.com/KienThuc_DSKienThuc.aspx?Id=100http://www.csharpvn.com/KienThuc_CapNhat.aspxhttp://__dopostback%28%27ctl00%24ctl00%24uctopmenu1%24avieclam%27%2C%27%27%29/http://__dopostback%28%27ctl00%24ctl00%24uctopmenu1%24ahoidap%27%2C%27%27%29/http://__dopostback%28%27ctl00%24ctl00%24uctopmenu1%24asanpham%27%2C%27%27%29/http://__dopostback%28%27ctl00%24ctl00%24uctopmenu1%24avideo%27%2C%27%27%29/http://__dopostback%28%27ctl00%24ctl00%24uctopmenu1%24atailieu%27%2C%27%27%29/http://__dopostback%28%27ctl00%24ctl00%24uctopmenu1%24akienthuc%27%2C%27%27%29/ -
7/27/2019 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
2/6
06/05/2013 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
www.csharpvn.com/KienThuc_ChiTietKienThuc.aspx?Id=291
3.phn tch v d trn- Hng 1 : l tp hp cc t th c bn ca nhn vt khi nhn vt chuyn ng t di ln trn- Hng 2 : l tp hp cc t th c bn ca nhn vt khi nhn vt chuyn ng t tri qua phi- Hng 3 : l tp hp cc t th c bn ca nhn vt khi nhn vt chuyn ng t trn xung di- Hng 4 : l tp hp cc t th c bn ca nhn vt khi nhn vt chuyn ng t phi qua tri
4.Lm sao to chuyn ng t Sprite ?-Nhn vt hin th trong Game c ct t 1 trong cc t th trong Sprite image trn.Tm gi lkhung ct-Do cc t th xp cch u nhau nn vic xc nh chnh xc khung ct ht sc d dng.C spriteimage c xem nh 1 ma trn 2 chiu cc t th-Khi cn nhn vt chuyn ng. gi s cn nhn vt chuyn ng t di ln trn.Ta s cho ch sdng ca khung ct bng 0 ng thi cho ch s ct lp li t 0->4 v ch stop khi nhn c lnh stop
t chng trnh.-Nh vy tp hp cc t th nhn vt chuyn ng t di ln c load trong thi gian ngn lm chochng ta c cm gic nhn vt bc i t di ln nh tht vy.-Vi cc hng chuyn ng khc th cng lm tng t nhng phi thay i ch s dng ca khungcn ct cho ng vi hng chuyn ng m ta mong munBi 2 : Code chuyn ng nhn vt trong XNAtrong ca s Solution Explorer tm n Content ->Chut Phi->Add->Existing item->chn 1 c i imagenn(nen.png)+chn sprite trn(man.png)Xy dng lp NhanVat.cs001 usingSystem;
002 usingSystem.Collections.Generic;003 usingSystem.Linq;
004 usingMicrosoft.Xna.Framework;
005 usingMicrosoft.Xna.Framework.Audio;
006 usingMicrosoft.Xna.Framework.Content;
007 usingMicrosoft.Xna.Framework.GamerServices;
008 usingMicrosoft.Xna.Framework.Graphics;
009 usingMicrosoft.Xna.Framework.Input;
010 usingMicrosoft.Xna.Framework.Media;
011 usingMicrosoft.Xna.Framework.Net;
012 usingMicrosoft.Xna.Framework.Storage;namespacechuyen_dong_nhan_vat
013 {
014 publicclassNhanVat
015 {
016 privateGame1 Game;
017 privateTexture2D text;//sprite nhan vat
018 privatePoint khungnhin=newPoint(0,0);//vi tri khung nhin
019 privatePoint gioihan=newPoint(5,4);//gioi han khung nhin
020 privatebytekichthuoc=60;//kich thuoc khung nhin 60x60
021 privateintbuocChay = 3;//do dai moi buoc nhan vat
022 privatePoint viTri = newPoint(0,0);//vi tri nhan vat tren man hinh
023 privateHuongChuyenDong huongChuyenDong;
024 privatebooldangChay = false;
025 privateSystem.Windows.Forms.Timer capNhat_X;
026
027 publicNhanVat(Game1 game)
028 {
029 this.Game = game;
030 this.capNhat_X = newSystem.Windows.Forms.Timer();
031 this.capNhat_X.Interval = 100;
032 this.capNhat_X.Enabled = true;
033 capNhat_X.Tick += newEventHandler(capNhat_X_Tick);
034 }
035
036 privatevoidcapNhat_X_Tick(objectsender, EventArgs e)
037 {
038 //X chay tu 0->4
039 //cap nhat dong tac nhan vat
040 if(dangChay)
041 {
-
7/27/2019 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
3/6
06/05/2013 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
www.csharpvn.com/KienThuc_ChiTietKienThuc.aspx?Id=291
042 if(this.khungnhin.X < this.gioihan.X - 1)
043 {
044 this.khungnhin.X += 1;
045 }
046 elsethis.khungnhin.X = 0;
047 }
048 elsethis.khungnhin.X = 0;
049 }
050 publicvoidLoadContent(ContentManager Content)
051 {
052 this.text = Content.Load("man");053 }
054 publicvoidUpdate()
055 {
056 KeyboardState keys = Keyboard.GetState();
057 if(keys.IsKeyDown(Keys.Left))
058 {
059 //di chuyen tu phai qua trai
060 huongChuyenDong = HuongChuyenDong.PhaiQuaTrai;
061 DiChuyen();
062 return;
063 }
064 if(keys.IsKeyDown(Keys.Right))
065 {
066 //di chuyen tu trai qua phai
067 huongChuyenDong = HuongChuyenDong.TraiQuaPhai;
068 DiChuyen();
069 return;
070 }
071 if(keys.IsKeyDown(Keys.Up))
072 {
073 //di chuyen tu duoi len tren
074 huongChuyenDong = HuongChuyenDong.DuoiLenTren;
075 DiChuyen();
076 return;
077 }
078 if(keys.IsKeyDown(Keys.Down))
079 {
080 //di chuyen tu tren xuong
081 huongChuyenDong = HuongChuyenDong.TrenXuongDuoi;
082 DiChuyen();
083 return;
084 }
085 this.dangChay = false;
086 }
087 publicvoidDraw(SpriteBatch spriteBatch)
088 {
089 spriteBatch.Begin();
090
spriteBatch.Draw(this.text, newRectangle(this.viTri.X,this.viTri.Y,this.kichthuoc,this.kichthuoc), newRectangle(this.khungnhin.X *this.kichthuoc, this.khungnhin.Y *
this.kichthuoc,this.kichthuoc,this.kichthuoc), Color.White, 0, Vector2.Zero,SpriteEffects.None, 0);
091 spriteBatch.End();
092 }
093 privatevoidDiChuyen()
094 {
095 this.dangChay = true;
096 //Y chay tu 0->3
097
098 //cap nhat huong chay
099 if(huongChuyenDong == HuongChuyenDong.DuoiLenTren)
100 {
101 this.viTri.Y -= this.buocChay;
102 this.khungnhin.Y = 0;
-
7/27/2019 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
4/6
06/05/2013 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
www.csharpvn.com/KienThuc_ChiTietKienThuc.aspx?Id=291
103 }
104 elseif(huongChuyenDong == HuongChuyenDong.TrenXuongDuoi)
105 {
106 this.viTri.Y += this.buocChay;
107 this.khungnhin.Y = 2;
108 }
109 elseif(huongChuyenDong == HuongChuyenDong.TraiQuaPhai)
110 {
111 this.viTri.X += this.buocChay;
112 this.khungnhin.Y = 1;
113 }114 elseif(huongChuyenDong == HuongChuyenDong.PhaiQuaTrai)
115 {
116 this.viTri.X -= this.buocChay;
117 this.khungnhin.Y = 3;
118 }
119 raNgoaiBanDo();
120
121 }
122 privatevoidraNgoaiBanDo()
123 {
124 intxMax = this.Game.Window.ClientBounds.Width;
125 intyMax = this.Game.Window.ClientBounds.Height;
126 if(viTri.X < 0) this.viTri.X += buocChay;
127 if(viTri.X > xMax-kichthuoc) this.viTri.X -= buocChay;
128 if(viTri.Y < 0) this.viTri.Y += buocChay;
129 if(viTri.Y + buocChay > yMax-kichthuoc) this.viTri.Y -= buocChay;
130
131 }
132 }
133 }
xy dng enum HuongChuyenDong.cs01 usingSystem;
02 usingSystem.Collections.Generic;
03 usingSystem.Linq;
04 usingSystem.Text;namespacechuyen_dong_nhan_vat
05 {
06 publicenumHuongChuyenDong07 {
08 TraiQuaPhai,
09 PhaiQuaTrai,
10 TrenXuongDuoi,
11 DuoiLenTren,
12 }
13 }
code trong Game1.cs nh sau01 usingSystem;
02 usingSystem.Collections.Generic;
03 usingSystem.Linq;
04 usingMicrosoft.Xna.Framework;
05 usingMicrosoft.Xna.Framework.Audio;06 usingMicrosoft.Xna.Framework.Content;
07 usingMicrosoft.Xna.Framework.GamerServices;
08 usingMicrosoft.Xna.Framework.Graphics;
09 usingMicrosoft.Xna.Framework.Input;
10 usingMicrosoft.Xna.Framework.Media;
11 usingMicrosoft.Xna.Framework.Net;
12 usingMicrosoft.Xna.Framework.Storage;
13
14 namespacechuyen_dong_nhan_vat
15 {
16
17 publicclassGame1 : Microsoft.Xna.Framework.Game
18 {
-
7/27/2019 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
5/6
06/05/2013 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
www.csharpvn.com/KienThuc_ChiTietKienThuc.aspx?Id=291
19 privateGraphicsDeviceManager graphics;
20 privateSpriteBatch spriteBatch;
21 privateNhanVat nhanVat;
22 privateTexture2D nen;
23 publicGame1()
24 {
25 graphics = newGraphicsDeviceManager(this);
26 Content.RootDirectory = "Content";
27 nhanVat = newNhanVat(this);
28 }
29 30 protectedoverridevoidInitialize()
31 {
32
33 base.Initialize();
34 }
35
36 protectedoverridevoidLoadContent()
37 {
38 spriteBatch = newSpriteBatch(GraphicsDevice);
39 this.nen = Content.Load("nen");
40 this.nhanVat.LoadContent(this.Content);//load sprite cua nhan vat
41 }
42
43 protectedoverridevoidUnloadContent()
44 {
45
46 }
47
48 protectedoverridevoidUpdate(GameTime gameTime)
49 {
50
51 if(GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
52 this.Exit();
53 this.nhanVat.Update();//update chuyen dong nhan vat
54 base.Update(gameTime);
55 }
56 57 protectedoverridevoidDraw(GameTime gameTime)
58 {
59 GraphicsDevice.Clear(Color.CornflowerBlue);
60 spriteBatch.Begin();
61 spriteBatch.Draw(this.nen,newVector2(0,0),Color.White);
62 spriteBatch.End();
63 this.nhanVat.Draw(this.spriteBatch);//ve nhan vat len man hinh
64 base.Draw(gameTime);
65 }
66 }
67 }
xong ri ! y l kt quby gi nhn cc phm nhn vt s chuyn ng rt mt
-
7/27/2019 C# Vit Nam - Kin thc - [XNA] Chuyn ng ca nhn vt trong XNA
6/6
ng
ang xem trang ny: 1 ngi. Trong c:0 thnh vin
Kin thc | Ti liu | V ideo | Hi p | Sn phm | V ic lm
Copyright C# Vit Nam 2010 - 2013
http://www.csharpvn.com/ViecLam_Default.aspxhttp://www.csharpvn.com/SanPham_Default.aspxhttp://www.csharpvn.com/HoiDap_DSHoiDap.aspxhttp://www.csharpvn.com/Video_Default.aspxhttp://www.csharpvn.com/TaiLieu_Default.aspxhttp://www.csharpvn.com/KienThuc_Default.aspx