Hit Object

วิธีสร้างเกมลาก-วางที่ถูกต้อง

เกมการศึกษาส่วนใหญ่ไม่ว่าจะบน Tablet หรือจอ Touch screen มักจะมีการเล่นแบบลากวาง คือ ผู้เล่นลากวัตถุ ไปวางตามคำตอบให้ถูกต้อง ดังนั้นการเขียนเกมตรวจสอบการชนของวัตถุที่ดีจึงสามารถนำไปประยุกต์ได้กับหลายๆเกมทีเดียว   ในโปรแกรม Flash AS3 จะวิธีการตรวจสอบการชนอยู่ 2 แบบ แบบที่ 1 ตรวจสอบแบบ Object ชน Object แบบนี้จะตรวจสอบที่วัตถุ ชนกันแม่ปลิ่มๆ ก็ถือว่าชนแล้ว ตามภาพ โค๊ด if (object1.hitTestObject(objects2)) { // Do something }   แบบที่ 2 ตรวจสอบแบบ Object ชน จุด แบบชนจุด x,y การชนแบบนี้จะดีในกรณีที่ใช้ในเกมต่อจิ๊กซอ เราสามารถจุดชนเป็นจุด x y ตรงกลางภาพ เพราะฉะนั้นถ้าชนขอบๆไม่ถือว่าสำเร็จ ต้องชนจุดกลางภาพ โค๊ด if (object1.hitTestPoint(object2.x,object2.y)) { // Do something…

ทำเกมแทปเลตแบบมีผู้เล่นหลายคน (Event TOUCH_TAP จิ้มพร้อมกัน)

การใช้ Event นี้ก็เพื่อต้องการทำเกมที่มีผู้เล่น 2 คนขึ้นไป แย่งหรือช่วยกันจิ้มบนแทปเลต ซึ่งเกมจะต้องทำงานทุกนิ้วที่จิ้มลงมา เพราะฉะนั้นเหตุการณ์ที่เกิดในช่วงเวลาหนึ่งอาจมีจำนวน 2 เหตุการณ์ขึ้นไป ซึ่งปกติเมื่อเราทำเกมที่รับนิ้วจิ้ม อาจจะเขียนเป็น _mc.addEventListener(MouseEvent.CLICK, doClick); การเขียนแบบนี้เกมของเราจะรับได้เพียงจิ้ม(นิ้วเดียว) 1 ครั้งเท่านั้น นิ้วอื่นที่จิ้มลงมาจะไม่มีผลการทำงาน เราจึงต้องเป็นการใช้ Event ซะใหม่เป็น Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; _mc.addEventListener(TouchEvent.TOUCH_TAP, taphandler);   เท่านี้ก็สามารถทำเกมให้ผู้เล่นได้เล่นร่วมกันได้อย่างเมามันแล้วครับ ตัวอย่างโค๊ดแบบเต็มๆ Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; var mySprite:Sprite = new Sprite(); var myTextField:TextField = new TextField(); var count:uint = 0; mySprite.graphics.beginFill(0x336699); mySprite.graphics.drawRect(0,0,500,400); addChild(mySprite); mySprite.addEventListener(TouchEvent.TOUCH_TAP, taphandler); function taphandler(e:TouchEvent): void { count++; myTextField.text = “tapped…

สอนทำเกมสื่อการสอนเบื้องต้น ตรวจสอบการชน (ต่อจากลากวาง)

จากบทความที่แล้ว(ลากวาง) เราได้เขียนสคริปการลากวางแล้วเรียบร้อย แต่เกมจะสมบูรณ์ได้ต้องทำการตรวจสอบด้วยว่าวัตถุนั้นวางถูกที่ถูกทางหรือไม่   ตัวอย่าง จากภาพผมต้องการจะลากหมาลงกล่องหมายเลข2 (ถ้าลากลงกล่องอื่นถือว่าผิด) ถ้าถูกก็ให้หมาอยู่ในกล่องนั้น ถ้าผิดให้หมากลับไปที่เดิม 1. ทำกล่องเป็น Movie clip และตั้งชื่อแต่ละกล่อง ตามลำดับ สมมุติว่าชื่อ box1, box2, box3   2. เขียนสคริปควบคุมการทำงาน เมื่อกดลงเมาส์บนหมา mhanoi.addEventListener(MouseEvent.MOUSE_DOWN,mDown); mhanoi.addEventListener(MouseEvent.MOUSE_UP,mUp); function mDown (e:MouseEvent) { var _me = e.target; //สร้างตัวแปรรับค่า Movie clip หมาน้อย _me.oldX = _me.x; // จำค่าตำแหน่ง x y ไว้ เมื่อลากวางผิดจะจำค่านี้มาใช้ _me.oldY = _me.y; _me.startDrag(); } 3. เขียนสคริปควบคุมเมื่อปล่อยเมาส์ function mUp…

สอนทำเกมสื่อการสอนเบื้องต้น ลากวางวัตถุ

การทำเกมบนแทปเลตผู้เล่นจะใช้นิ้วในการสัมผัส และสิ่งที่ใช้บ่อยที่สุดคือการลากวางวัตถุ ในบทความนี้เราเริ่มด้วยสคริปลากวางง่ายๆกันก่อน และบทความต่อไปเราจะมาตรวจสอบกันว่า วัตถุที่วางนั้นถูกที่หรือไม่ 1. สร้าง Movie Clip ที่ใช้สำหรับการลากขึ้นมา การสร้าง Movie Clip ขอไม่อธิบายนะครับคิดว่าทุกคนน่าจะสร้างเป็น 2. ตั้งชื่อให้กับ Movie Clip เราจะสั่งงานมันก็ควรตั้งชื่อให้มันหน่อยครับ ไม่งั้นจะเรียกใช้งานมันไม่ถูก ผมตั้งชื่อให้มันว่าไอ้บัก mhanoi (หมาน้อย) 3. add event สำหรับขั้นตอนนี้ภาษาโปรแกรมจะเรียกว่าการ add event  หรือการกำหนดเหตุการณ์ให้กับวัตถุ mhanoi.addEventListener(MouseEvent.MOUSE_DOWN, doDrag); 4. กำหนด function การทำงานของ doDrag function doDrag(e:MouseEvent){ e.tartget.startDrag(); } ใครไม่เข้าใจโค๊ดด้านบนให้ลองจินตนาการ ดังนี้ครับ ผม : เฮ่ยไอ้บักหมาน้อย มานี่หน่อยดิ๊ mhanoi หมาน้อย : (กระดิกหาง) ผม : ว่างป่าวจะให้ช่วยทำอะไรหน่อย addEventListener หมาน้อย : ว่ามา ผม : เด๋วจะมีคนเอามาเมาส์มาจิ้มที่มึงนะ MouseEvent.MOUSE_DOWN ให้มึงทำตามที่เขียนในกระดาษนี้นะ…

ปัญหาอัพ App ขึ้น store แล้ว Application Loader ฟ้อง fail codesign

ปัญหา Error นี้เจอบ่อยมาก แต่ก็ลืมวิธีแก้ปัญหาได้ทุกที เพราะนานๆจะอัพแอพขึ้น Store สักที

error-codesign

แก้ปัญหาโดยการ ลองสร้าง Cer แบบ Distribute ขึ้นมาใหม่ และExport ไฟล์ p12 ใหม่ provision แบบ Distribute ก็เชื่อมโยงกับ Cer ตัวใหม่นี้ให้ถูกต้อง