Suphot Sawattiwong tohpus@hotmail.com Sprite Suphot Sawattiwong tohpus@hotmail.com.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Funny with Action Script
Advertisements

Suphot Sawattiwong Array ใน C# Suphot Sawattiwong
C# เบื้องต้น ก่อนการเขียนเกมด้วย XNA
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
อาจารย์ปิยศักดิ์ ถีอาสนา
XNA Basic.
การเสนอโครงการวิทยานิพนธ์
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
XNA Basic.
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
Fast Page Mode DRAM (FPM DRAM) AND Extended-Data Output (EDO) DRAM
ตัวแปรชุด (Array) Chapter Introduction to Programming
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Lecture 11: อาร์เรย์แบบหลายมิติ
โดยการใช้ Layer และ Timeline
บทที่ 2 หลักการแก้ปัญหา
Week 6 ประกาศค่าตัวแปร.
ลักษณะพิเศษของ ภายใต้คำสั่ง <BODY>
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
โปรแกรมย่อย : Pascal Procedure
การกำหนด Section การใส่ Section Break ก็คือการกำหนดให้เอกสารแบ่งออกเป็นแต่ละ Section ดังนั้น คุณจึงสามารถกำหนดรูปแบบการจัดวางข้อความในแต่ละ Section ให้แตกต่างกัน.
Arrays.
SCC : Suthida Chaichomchuen
PROCEDURE <<โปรแกรมย่อย>>
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
โปรแกรม Microsoft Access
การสร้าง Digital Video ด้วย Window Movie Maker
อาร์เรย์ (Array).
Lab 7: เกมไพ่จับคู่ (อีกรอบ)
Suphot Sawattiwong Lab IV: Array Suphot Sawattiwong
Suphot Sawattiwong Sound On Game Suphot Sawattiwong
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
โปรแกรม DeskTopAuthor
Memory Management ในยุคก่อน
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
HTML, PHP.
หลักการโปรแกรมเบื้องต้น
การใช้ Word เพื่อการคำนวณ
ตัวแปรกับชนิดของข้อมูล
Method of Class อ.สุพจน์ สิงหัษฐิต
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
โดย อ. นัฐพงศ์ ส่งเนียม Do Loop Until โดย อ. นัฐพงศ์ ส่งเนียม
เขียนโปรแกรมเพื่อแสดงข้อมูลพนักงาน ด้วย ADO.NET vs. DataReader
รู้จักกับTimeline, Layer และ Scene รู้จักกับTimeline, Layer และ Scene
Week 2 Variables.
Computer Programming for Engineers
บทที่ 3 การทำงานกับฟอร์ม (Form)
โปรแกรม Microsoft Access
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
Object-Oriented Programming
Symbol & Instance.
พื้นฐานเกี่ยวกับโปรแกรม Flash CS3
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Tip & Trick ตัดต่อ และซ้อนภาพ ปรับแต่งภาพให้สีสันสดใส
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
1 ซอฟท์แวร์ที่ น่าสนใจ จัดทำโดย นางสาวรัชดา ณรงค์ ns B06.
หลักการเขียนโปรแกรม ( )
บทที่ 9 การใช้งานฟอร์มและคอนโทรลต่าง ๆ
โครงสร้างข้อมูลแบบลิงก์ลิสต์
Object Oriented Programming : OOP
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
โรงเรียนวังไกลกังวล หัวหิน
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หลักการโปรแกรมเบื้องต้น
ใบสำเนางานนำเสนอ:

Suphot Sawattiwong tohpus@hotmail.com Sprite Suphot Sawattiwong tohpus@hotmail.com

Sprite ใน XNA นั้น ใช้ตัวแปร Texture2D ในการเก็บรูปภาพที่ใช้งานแต่หากศัพท์ที่นิยมใช้กันทั่วไปในการพัฒนาเกม อาจจะเรียกสิ่งเหล่านี้ว่า “Sprite” โดยปกติที่ผ่านมาได้มีการโหลดรูปเพื่อใช้ในเกมโดย 1 ภาพ เป็นภาพที่พร้อมใช้งาน แต่หากเกมมีเป็น 100 ภาพ มันก็เสียเวลาที่โหลด content นานเกินไป ดังนั้นเราจึงมีวิธีการจัดภาพที่มีลักษณะการใช้งานเข้าด้วยกันมาอยู่ในภาพเดียวกัน และเลือกที่จัดการโดยการ Clip

การ Clip ของ Sprite การ Clip เป็นการตัดภาพออกมาเป็นส่วนเพื่อที่ใช้งานเฉพาะส่วนนั้นๆได้ Rectangle(localX,localY,ความกว้างที่ต้องการ, ความยาวที่ต้องการ) แล้วนำไปใส่ใน Draw

ตัวอย่างการ Clip ตัวอย่างจากภาพก่อนหน้าหาก clip ที่กรอบสีแดงของภาพต้องใช้คำสั่งดังนี้ spriteBatch.Draw(t2dSprite, new Vector(10, 20), new Rectangle(0, 0, 64, 64), Color.White);

ตัวอย่างการ Clip หากต้องการ Clip ดังภาพต้องเขียน code ดังต่อไปนี้ spriteBatch.Draw(t2dSprite, new Vector(10, 20), new Rectangle(10, 64, 64, 64), Color.White); ให้ดู Project ที่ชื่อว่า SpriteClip แล้วลองรันดู

Cel Animation หรือ Sprite Animation จากที่รู้จักการใช้ Clip แล้ว ต่อมาเป็นการเพิ่มขีดความสามารถของ Clip ให้สูงขึ้น โดยการนอกจากทำการ Clip เป็นชิ้นงานแล้ว นำมาทำการต่อเนื่องเป็น Animation กัน ซึ่งสิ่งเหล่านี้เรียกว่า “Cel Animation”

ชุดคำสั่งในการใช้งาน SpriteAnimationManager การประกาศ Instance ทำได้โดยมี parameter ดังนี้ ตัวแปร = new SpriteAnimationManager(Game game, string contentPath); โดยมี game เป็นตัวที่เรียก Class game ที่เป็นตัวเรียกใช้ sam contentPath เป็นที่อยู่ของที่เก็บภาพใน Folder Contentอีกที

ชุดคำสั่งในการใช้งาน SpriteAnimationManager การประกาศ Instance ทำได้โดยมี parameter ดังนี้ ตัวแปร = new SpriteAnimationManager(Game game, string contentPath); โดยมี game เป็นตัวที่เรียก Class game ที่เป็นตัวเรียกใช้ sam contentPath เป็นที่อยู่ของที่เก็บภาพใน Folder Contentอีกที

การ AddAnimation ในSpriteAnimationManager ได้มีการ AddAnimation อยู่2 แบบด้วยกันคือ แบบที่ 1 animationKey เป็นชื่อ Animation ที่ต้องการใช้ textureName เป็นชื่อไฟล์ Texture SpriteCount เป็น Struct ที่สามารถเรียกใช้โดยใส่ จำนวน frame ต่อแถว และใส่จำนวนแถว เช่น new SpriteCount(6, 3) framesPerSecond เป็น ความเร็วในการเคลื่อนที่ของ Sprite หน่วยเป็น fps AddAnimation(string animationKey, string textureName, SpriteCount spriteCount, int framesPerSecond)

การ AddAnimation แบบที่ 2 animationKey เป็นชื่อ Animation ที่ต้องการใช้ textureName เป็นชื่อไฟล์ Texture SpriteRange เป็น Struct ที่สามารถเรียกใช้ได้โดยการใส่ จุดเริ่มต้นทั้ง x,y หากจุดเริ่มต้นเป็น 1,1 และตามด้วยตำแหน่งท้ายสุดของช่วงเช่น 6,1 เช่น new SpriteRange(1, 1, 6,1) spriteWidth คือความกว้างของ sprite spriteHeight คือความยาวของ sprite numberOfSprites คือจำนวน sprite ในช่วง framesPerSecond เป็น ความเร็วในการเคลื่อนที่ของ Sprite หน่วยเป็น fps AddAnimation(string animationKey, string textureName, SpriteRange spriteRange, int spriteWidth, int spriteHeight,int numberOfSprites, int framesPerSecond)

การวาด Sprite Animation มีด้วยกัน 2 แบบ แบบที่ 1 gameTime เป็นตัวแปรของเวลาในเกม animationKey ชื่อ ActionของSprite spriteBatch นำ spriteBatchจาก Class game เข้ามาใช้งาน position เป็นตำแหน่งของภาพที่ต้องการให้ draw Draw(GameTime gameTime, string animationKey, SpriteBatch batch, Vector2 position)

การวาด Sprite Animation แบบที่ 2 gameTime เป็นตัวแปรของเวลาในเกม animationKey ชื่อ ActionของSprite spriteBatch นำ spriteBatchจาก Class game เข้ามาใช้งาน position เป็นตำแหน่งของภาพที่ต้องการให้ draw Color เป็นสีที่ใช้ในการแสดง Draw(GameTime gameTime, string animationKey, SpriteBatch batch, Vector2 position, Color color)

การใช้งาน SpriteAnimationManager ดูใน Project Ex15_SpriteAnimate ให้ add PhotXNALibrary จากนั้น ให้ประกาศตัวแปร ใน Class Game1 SpriteAnimationManager sam; จากนั้นใน Method LoadContent sam = new SpriteAnimationManager(this, @""); // new instance โดยให้ใส่ instance game และ folder ที่เก็บภาพ Components.Add(sam); // ทำการ Add sam เข้าไปในเกม

การใช้งาน SpriteAnimationManager sam.AddAnimation("Bee_All", "Monster_Set_01", new SpriteCount(6, 3),8); // ทำการ Add Animation เป็นการ Play Animation ทั้งหมดใน Texture โดยบอก column และ row รวมถึง จำนวน FramesPerSecond sam.AddAnimation("Bee_Fly", "Monster_Set_01", new SpriteRange(1, 1, 6, 1), 76, 66, 6, 8); //ทำการ Add Animation เป็นการ Play Animation ตั้งแต่ 1,1 ถึง 6,1 ความกว้างยาวของ sprite จำนวนframesในAction 6 frames และ มี ความเร็ว 8 fps

การใช้งาน SpriteAnimationManager ใน Method Draw ให้เพิ่มดังต่อไปนี้ spriteBatch.Begin(); sam.Draw(gameTime, "Bee_All", spriteBatch, new Vector2(30,300)); // ทำการวาด Action Bee_All sam.Draw(gameTime, "Bee_Fly", spriteBatch, new Vector2(300, 300)); spriteBatch.End(); // ทำการวาด Action Bee_Fly

Lab8: เกมหยิบของ เกมนี้จะแบ่งของเป็น 2 ชนิด ลงในพื้นที่กำหนด หากวางผิดที่ก็จะตาย หากวางถูกที่ก็จะได้คะแนน โดยตัวละครต้องเดินไปเดินมาในฉากได้ จากภาพ ตัวละคร จะมีแกะ กับ หมู เดินไปเดินมาในฉาก เราต้องเอาแกะ ไปไว้ ในรั้วของแกะ และหมู เอาไว้ในรั้วของหมู

เงื่อนไขเกมหยิบของ การคิดคะแนนนั้น หากวางให้ถูกที่ ให้ได้ +200 และหากตัวละครตาย ในกรณีวางผิดที่ ให้ -100 ให้เลือกตัวละครที่มี Animation อะไรก็ได้มา 2 ตัว (ทำขึ้นมาเองก็ได้) ซึ่งต้อง มีภาพ Animation การเดิน และ ภาพ Animation ตอนตาย ในระหว่างการลากตัวละคร ควรให้ตัวละครเด่นขึ้นมา ไม่ว่าจะใช้การ Scale ขึ้นมา หรือ อื่นแล้วแต่ตามชอบใจ ต้องมี Mouse Pointer