(อาจารย์สุธิรา) เราถึงตอน Scipt แล้ว เดี๋ยวทีนี้ ให้เด็ก ๆ เช็กว่าตรงไหน Hierarchy กับโมเดลนะคะ เราจะต้องมี Player ที่เราสร้างไว้นะคะ ถ้า Player ในตรงนี้ ถ้าดูใน Scene ตัวนี้นะคะ เจ้าตัวนี้นะคะ ก็คือตัว Amy ของเรานั่นเองนะคะ ทีนี้สิ่งที่เราจะทำต่อมา ก็คือเราจะมากำหนดค่า Paramitor นะคะ เรามาที่... Animator ตัวมันก็จะขึ้นหน้าต่างที่มี Pop up คำว่า... ตัวนี้ขึ้นมาไหมเด็ก ๆ ที่มีเหมือน... เหมือนปุ่มสีเขียว สีอะไรอย่างนี้ขึ้นมาใช่ไหมคะ เสร็จแล้วคลิกที่... ไม่ ๆ ๆ ให้... ขึ้นอย่างนี้หรือยัง ยังไม่ขึ้น อ้าว สัปดาห์ก่อนให้ทำแล้วไม่ใช่เหรอ เกมมาอยู่นี่แล้ว Animator จะขึ้นก็ต่อเมื่อ... เขียนตัวนี้หรือยังคะ Script แล้วก็ Script มี Charactor Movement หรือยัง อ้าว อยู่ใน Asset น่ะ ให้สร้างโฟลเดอร์ชื่อ Script ไง ใน Folder Asset ของเราที่สร้างไว้ มี Game มีโมเดล แล้วก็มีสคริปต์ไปที่โฟลเดอร์ที่ชื่อ Script เข้าไปดู มี... สัญลักษณ์ C# แล้วก็มี Charactor Movement ถ้ามีแล้วลองดับเบิลคลิกเข้าไปที่ Character Movement ก่อน ให้มันเหมือนมัน Run พอ... อันนี้เสร็จนะคะ เรามาดูที่ตัว Player เด็ก ๆ คลิกที่ตัว Player หรือยัง เด็ก ๆ คลิกที่ตัว Hirarche ก่อน แล้วก็ไปดูที่โมเดลด้วย ไปดูที่ Model ด้วย Player ที่โมเดลด้วย สร้างหรือยังคะ ตรงโมเดลนี่ ต้องสร้าง player ก่อนมันถึงจะมีตัวนี้ขึ้นมา ในโมเดลจะมี None Flying None-idle None... ขึ้นแล้วใช่ไหม ดูให้เพื่อนด้วย ใครยังไม่ขึ้นดูให้เพื่อนด้วย ดูให้เพื่อนด้วย เพราะว่าสัปดาห์ที่แล้วสอนไปแล้วไง เห็นไหม ดูดี ๆ นะคะ ต้องเลือกก่อน ต้องมาเลือกนี่ เหมือนเรามีอะไร None-idle ใช่ไหม แล้วก็อะไรอีก แล้วก็ Runing ใช่ไหม คลิกขวาแล้วก็ Create From... เดี๋ยวนะคะ ของเด็ก ๆ ขึ้นมามีกี่ตัว 3 ตัวอย่างนี้ใช่ไหม 1 2 3 นี่ เห็นหรือยัง เดี๋ยวลากจากนี่ เดี๋ยวแม่ลบก่อน ดูนะ ตรง Entry ที่เราจะเชื่อมโยง ถ้ายังไม่เชื่อมโยง ดูนะคะ เราจะต้องไป... ไปที่โมเดลใช่ไหม โมเดลเราจะมี None-Running กับ None-Idle Idle ก็คือยืนนิ่ง ๆ จะเอา Idle มาก่อน แล้วก็ลาก คลิกข้างไว้ ลากมาวาง โอเคไหม แล้วก็อีกอันหนึ่ง Running ของเรามี 2 ตัว ดูเครื่องมือ... เดี๋ยว ๆ ๆ เดี๋ยวจัดการครับ ตัวนี้นะ ดูนะคะ ที่ Idle เราน่ะ ตรงนี้เราตั้งชื่อเป็น Idle I-d-l-e ใช่ไหม ส่วน Runing เอ้ย เลือกผิด ขอโทษ อันแรก นี่ของเราชื่อตัวแรก กดผิดอันใช่ไหม ดูดี ๆ นึกออกนะ ตอนเราเอามาใช่ไหม ตอนเราลากมา... เดี๋ยวลบก่อน เดี๋ยวจะงง ไม่ใช่ว่าลากมา ลาก Idle มา แต่ไปตั้งชื่อ Run อย่างนี้ก็ไม่ใช่ใช่ไหม พอลากมาคลิกตรงนี้ คลิกที่ปุ่มมันน่ะ แล้วก็มาตั้งชื่อให้มันเป็น Idle I-d-l-e อันนี้คือ Idle อันนี้ปุ่มก็จะเป็นคำว่า "Idle" เหมือนกัน เสร็จแล้ว Running Running เราก็คลิกที่ปุ่มมัน แล้วก็ตั้งชื่อเป็น Runing R-u-n-n-i-n-g Running เห็นไหมคะ แล้วก็จะมีไอ้ตัวนี้ 2 อัน แล้ว Exit เอาลงมาก่อน เลื่อนขึ้นไป ปรับได้ ปรับได้ โอเค ทีนี้จะมากำหนดค่า Parameter พร้อมไปต่อไหมคะ ตอนนี้เด็ก ๆ ได้ Idle กับ Running หรือยังคะ อ๋อ เดี๋ยวนะ ลืม แล้วก็กำหนดค่าให้น้องด้วยมาตรง Idle นะ แล้วจิ้มเข้าไปตรง... ตรง... ตรงนี้นะ ตรง Idle เรานี่ มันจะมีสามเหลี่ยมใช่ไหม เราจิ้มให้มันขยายออกมาอีกชั้นหนึ่งใช่ไหม มันก็จะมีข้างใน นี่ ๆ คลิกตรงที่สามเหลี่ยมให้มันลงมา แต่ต้องสร้างก่อนนะ ไม่อย่างนั้นมัน... ิืทมใฝ ท ค ืคทีนี้ มากำหนดค่า Parameter นะคะ ตัวแรกที่เราคลิกที่ Idle ก่อน เห็นไหม เห็นตรงนี้ไหม Parameter นี่ เห็นไหมคะ มันจะมี Layer นะ กับ Parameter คลิกที่ Parameter ค่ะ เห็นไหม มันจะมี 2 ตัวใช่ไหมตรง Layer เราจะกำหนดให้ Idle เรานะคะ เลือก ดูดี ๆ นะเด็ก ๆ ว่าตอนนี้อยู่ตำแหน่งของ Parameter หรือ Layer กำหนดค่า ParameteParametr เพราะฉะนั้น เราต้องคลิกที่ Parameter นะคะ แล้วก็คลิก + กดที่เครื่องหมาย + เห็นไหมคะ ตัวแรกที่เราจะใส่ ก็คือ Float กำหนดตัวแปรหรือประกาศตัวแปรอย่างนี้ค่ะ ตั้งชื่อนะคะ Input พิมพ์คำว่า "Input" นะคะ แล้วก็เว้นวรรค 1 อัน 1 ครั้ง แล้วก็กด Space bar 1 ครั้ง แกน X แกน Y เราน่ะ เพราะฉะนั้น ให้เป็นตัวใหญ่ วรรคก่อน แล้วก็กดตัว x เห็นไหมคะ เพิ่มอีกค่ะ เพิ่ม X X เพิ่มอีก 1 อัน กดเพิ่มเหมือนเดิม ทำเหมือนเดิม กดเหมือนเดิมนะคะ เป็น Input Z ค่ะ Z ก็ตัวใหญ่นะคะ ตัวนี้มันจะเป็นตัวแปร เพราะฉะนั้น เด็ก ๆ ต้องจำด้วยนะ เราใช้ตัวใหญ่ Z เราใช้ตัวใหญ่ คำว่า "Input" เราเว้นวรรคนะ เราประกาศตัวแปร 2 ตัว มี Input X กับ Input Z ทีนี้ กำหนด Bool คลิกเครื่องหมายบวกเหมือนเดิม Boolean ก็คือตัวนี้ Running ใช่คำว่า "Running" แล้วก็อีกตัวหนึ่ง Boolean อีกตัวหนึ่ง 2 ตัว เรามีวิ่งกับ... Moving Moving นะคะ M-oเรามา... เรามีจิ้มที่ Idle เรา แล้วคลิกขวา แล้วก็เลือก เห็นไหม มันจะมีลูกศรมา ลากลงมาใส่อะไรคะ ลากลูกศรลงมาใส่ Run ของเรา จิ้มจุ่มลงไป เห็นไหม Make Transition แล้วก็การเชื่อมโยงใช่ไหมคะ ดูใหม่นะ ตอนนี้ที่ Idle กับ Running ไม่มีการเคลื่อนไหวใช่ไหม เราคลิกที่ Idle ก่อน แล้วก็คลิกขวา เห็นไหมคะ มันจะมีคำว่า "Make Transition" ลากออกมาจะเห็น เห็นไหมลูกศร คลิกใส่... ไปใส่ที่ Running เพราะฉะนั้น เราต้องการเชื่อมหรือ... โอเคนะคะ เมื่อเชื่อมมาจาก Running แล้ว Running ก็ต้องโยงกลับไป เห็นไหมคะเด็ก ๆ แล้วดูที่ให้เด็ก ๆ คลิกที่ไอ้เส้นที่เราโยงมานะ แล้วดูตรงนี้ ตำแหน่งนี่ เอาเครื่องหมายถูกที่ Hash Exit ก็คือเราจะไม่... ไม่ออกเมื่อถึงเวลา เห็นไหม เอาออกก่อนนะคะ เพราะเราต้องการให้มันวนลูปน่ะ มีการวนลูปนะคะ มีการทำงานแบบวนลูปนี่ เราต้องการติ๊กตัวนี้ออก ติ๊กเอาเครื่องหมายถูกออก แล้วก็มาที่ comnetxtion เห็นไหมคะ มีเครื่องหมายบวก ใส่บวกเข้าไปเพิ่ม ก็คือเราจะเพิ่มอะไร เพิ่ม... เอ้ย ไม่ใช่สิ เราก็จะบอกว่าเมื่อมีการวิ่ง Running เราเลือก Boolean Running เป็นจริง เห็นไหมคะ เพิ่มอีกตัวหนึ่ง Moving ก็ต้องเป็นจริง ก็ต้องกำหนดค่าเริ่มต้น ว่าเมื่อเป็นจริงถึงจะทำงาน เห็นไหมคะ เพราะฉะนั้น Running กับ Moving ก่อนนะคะ นั่นเพราะตอนนี้เรากำหนดค่าให้ Idle นะ เราไม่ได้กำหนดค่า ให้ Running โอเคนะคะ Idle ได้แล้วนะ อันนี้เห็นไหมการเชื่อมโยงตรงชื่อมัน เห็นไหม Idle ไปที่ Running ทีนี้เรามาคลิกที่ Running เราจะ... นะคะ เราจะเชื่อมโยงกับ ทำเหมือนเดิม Make Transition เหมือนเดิม แล้วก็โยงกลับคืนไป แล้วก็มาคลิกเลือกที่เส้นที่เรา Running กับ Idle นะคะ ทำเหมือนกัน เอา comnetxtion ออกเหมือนเดิม แล้วก็กลับมาที่ Condition เมื่อกี้ตอนขามาจาก Idle เป็น to เพราะฉะนั้น ขากลับเราจะต้องเป็นตรงกันข้ามนะคะ เด็ก ๆ Running เราก็จะเปลี่ยนเป็น False True เป็น False Float คืนค่า เริ่ม ค่าเริ่มต้นค่านี้ คือ พอเช็กถ้าเป็นจริงทำ ไม่จริงไปไหนอะไรอย่างนี้ เพราะฉะนั้น Condition เงื่อนไขก็จะมี 2 ค่า ก็คือ True กับ False นะคะ เป็นจริงทำอะไร ไม่จริงทำอะไร โอเคไหม เด็ก ๆ จะมีไอ้เส้น 2 เส้นนี่ ลองกด Play ดูสิคะ เขาบอกให้เราไปลากไอ้น้องมันอยู่ไหนนะ มันก็จะวนนี่แหละ วนกันไปวนกันมา จาก Idle ไปหา... Player มันไปอยู่ไหนล่ะนี่ เดี๋ยวค่อยดูต่อ เพราะไอ้ตอนต่อไปยาวมากขอบอก เพราะฉะนั้น ตั้งใจดี ๆ นะคะ เพราะเราต้องมาเขียนสคริปต์อีก โอเคหรือยังคะ ตอนนี้เด็ก ๆ ได้ Idle แล้ว มีการเชื่อมโยงจาก Idle มา Running แล้วกลับจาก Running ไป Idle นะคะ ก็คือให้มันวนลูป วิ่งแล้วหยุด หยุดแล้ววิ่งอย่างนี้ นึกออกนะ ทีนี้ สิ่งที่เราจะต้องทำต่อมาให้ไปที่ Asset Script ของเรา เข้าไปที่สคริปต์ เจอหรือยัง อันนี้ Running Running True Idle... เหมือนกันนะคะ ตอน Idle to Running โอเค แหม ไอ้ตัวนี้มัน... ดูนะคะ เวลาเราจะดูตรงนี้ เด็ก ๆ ดู ตอนที่ Idle เอ้ย Running True Idle คลิก Player ตรง Hierarchy นี่ ลากไปวางตรง Preview นะคะ ตรงนี้ถึงจะขึ้นนะเด็ก ๆ คลิกที่การเชื่อมโยงของเรา แล้วลาก ลาก Player นะคะ คลิกค้างไว้แล้วลากมาใส่ตรง Preview แล้วกด Play ดู นี่น้องวิ่งไป แล้วก็จะวิ่งกลับคืน จังหวะเวลาเราสามารถปรับได้นะ อันนี้เพราะเราตั้งไว้น้อยนะ 0. เท่าไรเอง เดี๋ยวเราค่อยไปเพิ่ม อันนี้ดูก่อนว่าลักษณะการวิ่งกับหยุดเขาเป็นอย่างไร แล้วก็ 1. ก็คือตัว Model ที่เราเอามาด้วย Model ตอนที่เราไปเลือกจาก Mixamo น่ะค่ะ ไอ้ตัวนี้ที่แม่เลือกมามันวิ่งแค่จังหวะเดียว เพราะมันจะมีเห็นไหม จากโมเดลที่เราเลือกมา มันจะมีวิ่งวนก็มี นั้นก็คือแล้วแต่เราเลือก ตัวที่เราจะเอามาใช้เป็นอย่างไร โอเค ต่อไปนะคะ เราก็จะ... มาที่ตัวนี้ Player ของเรา เห็นไหมคะ Player ที่อยู่ที่ Hierarchy นะคะ อย่าลืมว่าเรามี Player อยู่หลายส่วนให้ดูแม่เลือกตรงไหนด้วย แล้ว...แล้วก็ Access Script เห็นไหมคะ เขาไปใน script ไว้ด้วย เข้าไปก่อน ให้มันขึ้นแบบนี้นะ Player ใน Hierarchy เรา แล้วก็คลิกไปวาง ให้วางต่อจาก... เดี๋ยวนะ แคปซูล เห็น Capsule แล้วนะ เอาไปวาง ลากไอ้นี่นะคะ ไปใส่ ลากไอ้ Script ที่เราสร้างไว้น่ะ Character Moving เห็นหรือยัง ลากมาวางอย่างนี้ ใครยังไม่ขึ้นแบบนี้ เห็นไหม แต่เดิมที่เรามี เรามี Character Controler มี Capsule Controler เราน่ะ ใน Player ที่เราสร้างไว้ Player ที่เราสร้างไว้ เห็นไหมคะ แล้วเรามาลาก Character Movement เป็น Script ที่เราสร้างขึ้นนี่เอามาใส่ต่อ... ต่อท้าย Capsule Corider นะคะ ใครยังไม่ขึ้นแบบนี้บ้าง ขึ้นหมดหรือยัง ได้หมดแล้วนะคะ ไปต่อนะคะ ดับเบิลคลิกเลย ไปไหนแล้ว เราไม่มี C# เหรอ เสร็จ ไปที่เว็บเบราน์เซอร์นะคะเด็ก ๆ ไปดาวน์โหลด C# ของเรา Windows นะ For Windows ด้วยเลย For Windows Enter ก็มีของ Microsoft ทำไมไม่ขึ้น ก็ไม่ขึ้น เอาอันไหนดี อันนี้ก็ได้แล้วนะ เอาตัวฟรีนี่แหละ ตัว Free Download ก็ของ Microsoft เหมือนกันแหละนะ ไม่ต้อง Microsoft ได้ไหมน่ะ อยากได้ออนไลน์ เข้า C#.net อยู่เหรอ มันขึ้นอะไร เดี๋ยวนะ ใช่ ใช้ตัวนี้ก็ได้ เจอตัวนี้ก็เอาตัวนี้แหละ เอาตัวแรกเลย ขึ้นเหมือนกันหรือเปล่า เอา... For Windows เราเลือกอันแรกนะคะ Free Download เลย 2022 เหรอ แล้วก็ Install ให้เรียบร้อยนะเด็ก ๆ น่าจะเร็วอยู่หรอกของ Microsoft ไม่น่าช้า น่าจะเร็วอยู่นะ เดี๋ยวดูนะคะ ในส่วนของที่เราจะเขียน Code นะคะ ส่วนแรก ก็คือเราจะต้องมาทำการประกาศตัวแปรให้น้องก่อน ไม่ใช่ Signin แม่ไม่ได้เลือก Sign in เดี๋ยว... น่าจะได้ โอเค Install เลย คลิก Install เลยนะคะ เด็ก ๆ เดี๋ยวมันทำให้เอง ไม่ต้องไปเลือกอะไร พอมันขึ้นแบบนี้แล้วน่ะ นี่ เสร็จแล้วก็ปิดได้นะคะ แล้วก็มาที่ Unity เรา แล้วก็เห็นไหม ตรง Charactor Movement แล้วก็คลิก Open พอคลิก Open มันก็อาจจะยังไม่เปิด มันอาจจะเข้าไปถามไปเลือกโปรแกรมมันน่ะ ใครโหลดเสร็จแล้วเปิดหน้านี้นะคะ แล้วก็ให้พักเบรกก่อน เข้าห้องน้ำได้ เปิดหน้า C# ไว้ แม่ก็จะเบรกเหมือนกัน โอเค แล้วจะได้มาต่อเรื่องชวนปวดหัว โอเค เป็นอย่างไร เปิดได้หมดหรือยัง เดี๋ยวนะคะ น่าจะอีกเครื่องหนึ่งเครียดนะ เห็นแล้วเครียด... สีดำกับสีขาว เด็ก ๆ เอาสีไหน อันนี้สีดำนะ เดี๋ยวแม่เขียนให้ดูก่อน ชอบอันไหน ดำกับขาว เอาอันไหนลูก มาร์กี้ เอาดำ ดำหรือขาว เอาสีดำนะ โอเค โอเค อย่างนั้นจะเปลี่ยนโหมดเป็นสีดำให้ เอาเป็นดำนะ อ้าว ตกลงขาวหรือดำ เอาขาวนะ ดูดี ๆ นะ เอาขาวนะ โอเคนะ ตัวแรกที่เราจะเริ่มนะคะ อยู่ตรงนี้ ตำแหน่งนี้ เดี๋ยวรอเพื่อนอีกแป๊บหนึ่ง เออ รอเพื่อนก่อน คือ ตอนเด็ก ๆ พิมพ์น่ะ สีดำก็ได้ คือถามว่าที่ดูจากหน้าจอใหญ่น่ะ เห็น Code น่ะ เห็น Code ที่เลือกเอาสีอะไร เอาสีขาวนะ ค่ะ โอเคหรือยังคะ เหลือขององุ่นเหรอ ของกุ้งเต้นได้หรือยัง เครื่องกุ้งเต้นได้อยู่ใช่ไหม โอเค บรรทัดแรกนะคะ เราจะประกาศตัวแปร Animator รูปแบบการใช้ของ C# นี่ ดูนะคะ ตอนแรก Animator ที่เราพูดถึงนี่ จะเป็นตัวพิมพ์ด้วยตัวพิมพ์ใหญ่นะ แล้วตัว Animator ที่ 2 นี่ จะพิมพ์ด้วยตัวพิมพ์เล็กทั้งหมด ปิดด้วย ... เสมอนะคะ เพราะฉะนั้น บรรทัดแรก ประกาศตัวแปรให้ animator Animator ชื่อ Animator เห็นชัดไหม เพิ่มไซซ์อีกหรือเปล่าคะ ยังชัดอยู่นะ ชัดแล้วนะคะ ไม่เพิ่มแล้วนะ ตอนนี้ 2 บรรทัด เสร็จหรือยังคะ บรรทัดแรก Animator Animator สะกดให้มันถูกด้วยนะ เดี๋ยวจะมาเลือกใช้แล้วไม่ตรง ขึ้น Error อย่ามาโทษกันเด้อ ตอนนี้ยังไม่ได้ให้เขียนเอง ให้เขียนตามเท่านั้น ต้องสะกดให้ถูกนะคะ เพราะเวลาเรียก มันก็จะได้หาถูก Character Controller ก็ต้องเหมือนกัน แต่เปลี่ยนแค่กำหนดค่าแล้วก็ตัวไอ้นี่ มันเป็นตัวเล็กนะคะ ชื่อตัวแปรตัวใหญ่ ดู... กำหนดค่าให้อันตัวนี้หมายถึงการ... ดูนะคะ บรรทัดต่อไปเราจะกำหนดค่าให้ด้วย ตัวนี้จะเป็นตัวแปรที่ว่า Speed Speed ที่ว่าความเร็วนะคะ ใช้คำสั่ง Public เห็นไหม พอพิมพ์ตัว P ปุ๊บ public จะขึ้นมา ดับเบิลคลิกได้เลย จะได้ไม่ต้องพิมพ์ผิด ไม่เกิดปัญหาพิมพ์ผิดนะคะ ดูนะ ดูวิธีการนะ P เห็นไหมคะ public แล้วเลือกที่คำว่า "public" ดับเบิลคลิก คลิก 2 ที กดดับเบิลคลิก 2 ที คำว่า "Public" ก็จะขึ้นมา มันจะไม่เกิดปัญหาว่าพิมพ์ผิด ตัวต่อไป วรรค f-l-o-a-t มีคำว่า "Float" ขึ้นมา ดับเบิลคลิกได้เลย แล้วก็ตามด้วชื่อตัวแปร speed speed นะคะ วรรคใส่เครื่องหมาย = 6.0 ของเขาจะมี f ต่อท้าย 6... อย่าไปกดนะ อย่างนี้ไม่กด เพราะของเราเป็นเลข 0 นะคะ ไม่ใช่ตัว O ไม่ต้องไปกดนะ อย่าลืมปิดด้วยอะไรคะ ; ทุกครั้ง ปิดคำสั่งมี speed แล้วมีอะไรอีก ทำเหมือนกันเลยนะ เพราะฉะนั้น Copy ได้นะ ให้ Copy ได้ เราจะมาแก้แค่ตัวหลังนะ ไม่เอาหมดดีกว่า เดี๋ยวจะงงในการแก้ Copy นะ เอาแค่ Public Float พอ Ctrl + C จะได้ไม่พิมพ์ผิด กันปัญหาพิมพ์ผิดนะ Ctrl +C Ctrl + V เมื่อกี้ speed ความเร็ว ทีนี้การหมุน rotation r-o... rotate เราจะเอาเป็น rotate rotation rotation อะไร rotation speed เราใส่คำว่า "Speed" ด้วยเป็นความเร็วน่ะ อันนี้ตัวแปร พิมพ์ตาม พิมพ์ตามนะคะ ชื่อตัวแปรตัวนี้จะได้เหมือนกัน กำหนดค่าให้เท่ากับ 25 แล้วก็ปิดด้วย ; ค่ะ เรายังเหลือความเร็ว การหมุน หรือการวิ่งวน มีการกระโดด มีกระโดด แล้วก็เพิ่ม public flot อีก 1 ตัวนะคะ พอเรา Copy Public float กด Ctrl + V วางได้เลย อันนี้ Lump กระโดด = นี่เท่าไรดี เอาสัก 7.5 อันนี้มี f ด้วยนะคะ แล้วก็ปิดด้วย ; เหมือนเดิม มี... มีความเร็ว มีการหมุน มีการกระโดด ต่อไปเป็น garvity การร่วงหรือการตก หรือแรงโน้มถ่วงน่ะนะ Gravity เหมือนเดิม public Float เหมือน gravity เอาสัก 20 แล้วกัน 20.0f นะคะ แล้วก็ปิดด้วย ; ของเราดูจากตัวนี้เรานะคะ เราอยากให้น้องนี่ ทำอะไรบ้าง เดินได้ วิ่งได้ กระโดดได้ หมุนได้ใช่ไหม เพราะฉะนั้น ก็เลยมาเขียน Script ควบคุมเขานะคะ เพราะฉะนั้น ก็กำหนดค่าให้เขาด้วยนะคะ ตอนนี้เราได้ animator มี Charactor Controller มี Speed มี gravity แล้ว ประกาศค่าเยอะอยู่ เพราะว่าตัวการกระทำมันเยอะ จำได้นะเรามีค่า ในแกน X แกน Y นะ ตัวแปรตัวนี้ว่า Vector พิมพ์ด้วยตัวพิมพ์ใหญ่ ตัว V นะคะ V-e-c-t-o-r Vecetor แล้วก็วรรค ตามด้วยตัว P เอ้อ ไม่วรรคสิ Vector3 เขาไม่วรรค เขาไม่วรรค input vec นะคะ input ตัวนี้ ใช่ inputvec ใช่ แล้วก็ตามด้วยคำว่า "vec" แล้วก็ตามด้วย ; เดี๋ยวกำหนดให้ Vector3 ทำอะไร กำหนด vector3 ทำอะไร Vector3 เลือกเลย ตัวเดียวกัน กำหนดให้มัน target target inputvec Vec ในที่นี้คือ Vec ตัวใหญ่นะคะ ก็คือมาจาก Vector นั่นเอง Target direction D ตัวใหญ่ Direc แล้วก็ปิดด้วย ; ค่ะ ตัวสุดท้ายนะคะ private private อะไรบ้าง privatevector3private Vector3 Vector3 move... movedirection จะกำหนดให้ movedirection direction = Vector3. นะคะ .zero .zero Set ค่าให้เป็น 0 ปิดในส่วนของการประกาศ ตัวแปรต่าง ๆ เสร็จแล้วนะ โอเคไหม ใครยังพิมพ์ไม่เสร็จ พิมพ์หรือยัง เดี๋ยวเราจะได้ไปต่อนะคะ ยังไม่เสร็จมันจะไปต่อไม่ได้ 1 ส่วนนี่ Save ด้วย เพื่อความปลอดภัย File Save Save ด้วยนะคะ ต่อมาเราจะเข้ามาที่การสั่งให้มันทำงานแล้ว อยู่ใน void start ที่มัน start นะคะ เราจะเริ่มแล้ว เริ่มด้วยอะไรก่อน ตัวใหญ่นะคะ Time เรียกใช้ time Time .timeScale ให้เวลาเริ่มที่ 1 เรียก animator animator ตัวเล็กนะคะ ไม่ใช่ animator ตัวใหญ่ animator ตัวเล็ก บันทึกไปเลย เพราะเราประกาศตัวแปรน้องไปแล้ว = ให้มัน GetComponent ให้มันนับค่า GetComponent เครื่องหมาย... Animator ตัวใหญ่นะคะ ข้างใน... ไม่ใช่ปีกกา ขอโทษ วงเล็บ วงเล็บ ปีกกา เผื่อกด... แล้วก็ปิดด้วย : เรียก charactorController มาใช้นะคะ characterController ที่ขึ้นต้นด้วยตัวเล็ก ดับเบิลคลิกเลย เพราะเราประกาศไปแล้ว เดี๋ยวนะ เหมือนกัน = GetComponent ดับเบิลคลิก เปลี่ยนตัวข้างในนะคะ เป็น CharacterController ตัวใหญ่ เห็นไหม มัน... มันเหมือนกันน่ะ แต่ตอนตัวนี้เรียก Animator ตัวนี้เรียก CharacterController ในส่วนของ Start นะคะ มี 3 บรรทัด บรรทัดแรก timeScale = 1 กำหนดค่าให้ = 1 Animator กำหนดค่าให้เป็นค่าว่างนะคะ แล้วก็ CharactorController ก็กำหนดค่า รับค่า การรับค่าเป็นว่างไว้ก่อน ในส่วนของการให้เริ่มต้น เสร็จหมดหรือยังคะ ใครยังไม่เสร็จ ยกมือ เสร็จแล้วนะ โอเค เสร็จแล้วนะคะ โอเค ทีนี้มาดูส่วนต่อมา ส่วนของการอัปเดต เมื่อมันมี... ทุกครั้งนะคะ เวลาเราทำโปรแกรม เขียนโปรแกรมนี่ มันจะมีส่วนของการอัปเดต มันจะมีการให้อัปเดตนั่น นี่ นู้น กำหนดให้มัน Update อะไรบ้าง นะคะ อัปเดตจะยาวหน่อย float นะคะ เลือกเลย float ตัวแรก x = ค่า x มีค่าเท่ากับ แย่แล้ว - นะคะ แล้วก็ () เราเอาไว้ วงเล็บเปิดวงเล็บปิด ต้องมี 2 อัน ให้ใส่ 2 ครั้ง จะได้ไม่ลืม ค่าแรก... Input ใหญ่ Input ใหญ่นะคะ ไม่ใช่ในตัวนี้นะ Input ด้วยตัวพิมพ์ใหญ่ Input ตัวใหญ่ ตามด้วย . .Get ตัวใหญ่นะคะ G GetAxi A-x-i-s Raw Raw R ไม่ใช่ e ขอโทษที R นะคะ R-a-w น่ะ ไปที่วงเล็บ... เดี๋ยวนะ เดี๋ยวนะ อันนี้อยู่วงเล็บแรกนะ Input นี่ โอเคไหมคะ อย่างนี้นะเด็ก ๆ ขอโทษ อันนี้ใส่เครื่องหมายคำพูดค่ะ "" Vertical แล้วก็ปิดด้วย ; Vertical ก็คือแนวตั้งนะ มี Vertical ก็ต้องมี Horizontal ก็คือแนวนอน มีแกน X ก็ต้องมีแกน Z ก๊อบ ก๊อบเลย ก๊อบไปทั้งบรรทัดเลย เราจะเปลี่ยนแค่ตัว X กับตัว Vertical นะคะ เพราะฉะนั้น Copy ได้ค่ะ Copy แล้วก็วาง เปลี่ยนจาก X เป็น Z แล้วก็เปลี่ยนจาก Vertical เป็น Horizental Hori... แล้วกดพอบรรทัดที่... ต่อมา เรียกใช้ inputVec input เล็ก ประกาศไว้ข้างบนนะคะ ดับเบิลคลิกได้เลย = new new อะไร Vector3 ค่ะ ให้ Vector3 เรียกใช้ Vector3 นะคะ ใน Vector3 -ของเรา ก็คือไอ้แกนทั้ง 3 ของเรานี่ มีแกน x แกน y แกน z นะคะ กำหนดค่าที่แกน y เป็น 0 เอาใส่ 0 แทนตำแหน่งของ y เห็นไหม แล้วก็ลบ y ออกนะเด็ก ๆ เพราะค่าตรง... อ๋อ แล้วตรงนี้ บรรทัดนี้ อันนี้ x เป็น - พอเป็น Input เอา - ออก เพราะฉะนั้น วงเล็บลบออก 1 อัน โอเคนะคะ ไปต่อนะคะ น่าจะทันอยู่ เพราะส่วนใหญ่มัน... เรากำหนดตัวแปรไว้แล้วนะคะ เรียกใช้ตัวแปร Animator ตัวเล็กนะ . .Setfloat Float F ตัวใหญ่นะคะ F ตัวใหญ่ จะได้รู้ว่าเป็นคนละประโยค เอ้ย... เวลาเขียนในภาษาอังกฤษ เขาแยกคำ เอาตัวใหญ่มาคั่น เห็นไหม จะเป็นคำ ๆ SetFloat นะคะ เพราะเขียน Code มี... เพราถ้าเว้นวรรคมันจะเป็นคำ เป็นอีกประโยคหนึ่งไปเลย เพราะฉะนั้น เพราะฉะนั้นถ้าคำมันหลาย ๆ คำ มันก็ใช้ตัวใหญ่คั่น วงเล็บเปิดวงเล็บปิด แล้วก็เครื่องหมายคำพูด " ในเครื่องหมายคำพูด Input รับค่า เอา Input ตัวใหญ่นี่ ได้เลยนะคะ Input แล้วตามด้วย อ๋อ รับค่า X X รับค่า X InputX ใช้ X แล้วก็ z เล็กนะคะ ตัวแปร z แล้วก็ปิดด้วย ; มี Input X เราก็มี Input z ใช่ไหม เพราะฉะนั้น Copy ได้ Copy แล้วก็แก้ค่า x เป็น z นะคะ ไม่ใช่แก้ค่า x สิ เปลี่ยนค่า x เป็น z มันไม่ใช่ค่า ตัวนี้เป็นข้อความ ตัวนี้เป็น Input Z Z ใหญ่ ค่าตรงนี้เป็น x ตอน Input เป็น - แล้วเป็น -x x นะคะ โอเค แก้ตรงตัว x เป็นตัว z แล้วก็แก้ค่า z เป็น -x ในวงเล็บด้วย มันจะเหมือนตัวบน นี่ไง มันกำลังเรียกไอ้ 2 ตัวนี้ อัปเดตไอ้ค่า2 ตัวนี้อยู่นี่ ที่เรากำหนดไว้ กำหนด Float x Float z ไว้ เพราะฉะนั้น เราจะต้องมาเช็กเงื่อนไขให้น้องแล้วนะคะ กำหนด Condition if if นะคะ แล้วก็ปีกกา ปีกกานะ ปีกกาเปิด ไหนล่ะ เห็นไหมคะ มันจะมีปีกกาเปิดปุ๊บ พอมันเปิดมันจะมาอัตโนมัติ อย่าไปลบออกนะเด็ก ๆ เพราะไม่อย่างนั้น พอเวลาใส่นี่ เวลาใส่ไม่ครบมันจะขึ้น Error ไง นะคะ พอเรา Run โปรแกรม มันจะขึ้น Error เพราะฉะนั้น มันใส่มา ก็ไม่ต้องไปลบมัน แล้วก็ () มาโดยอัตโนมัติเหมือนเดิม ใส่วงเล็บเปิดนะคะ ค่า x กำหนดให้ x เครื่องหมายตกใจไหม เครื่องหมายตกใจ ไม่เท่ากับ ของ... คือในภาษาคอมพิวเตอร์ เครื่องหมายนี้ใส่เครื่องหมายตกใจกับเครื่องหมายเท่ากับ มันจะเป็นไม่เท่ากับ หาไม่เจอ ไม่ค่อยพิมพ์ อย่างนี้นะคะ ไม่เท่ากับ ให้ x ไม่เท่ากับ 0 ไม่ได้เริ่มที่ 0 เส้น เส้นตรง ๆ เจอแล้ว อยู่ตรง back/ เห็นไหม ไอ้เส้นตรง ๆ 3 อันน่ะ อยู่ตรง \ นะเด็ก ๆ Z ก็ไม่เท่ากับ 0 เหมือนกัน ไม่เท่ากับ 0 เหมือนกันนะคะ ไม่เท่ากับนะคะ ไม่เท่ากับ 0 เหมือนกัน เจอไหม เจอไอ้เส้น ขีด ๆ ตรง ๆ นี่ ใส่ปีกกาอีก 1 ครั้งนะคะ หลังวงเล็บเรา หลังวงเล็บปกตินะ ตรงนี้จะมีปีกกา 2 อัน เพราะฉะนั้น ใส่อีก 1 ครั้งค่ะ แล้วกด Enter เรียก animator ตัวเล็ก . . นะคะ เรามี SetBool Float แล้วเราก็มี SetBoolean ด้วย .Set Set ใหญ่ แต่เป็น Bool ใส่เครื่องหมายคำพูด เอ้ย พูดผิด วงเล็บก่อน แล้วค่อย Single quote เครื่องหมายคำพูด ก็คือ Moving Moving เรากำหนดค่า Moving True กับ False นะคะ เพราะฉะนั้น ค่า คำว่า "moving True ก่อน False ทีหลัง เพราะฉะนั้น ก็ Moving Ture Copy เหมือนเดิมค่ะ Boolean moving กับ Running เพราะฉะนั้น animator Set ก็ต้องมี 2 ตัว เห็นไหม ถ้า... ถ้ามันเป็นจริงเห็นไหมคะ มันจะมาทำอะไร มากำหนดให้ x เป็น 0 ก็คือจะวนลูปกลับไป คืนค่าเป็น 0 นะ เริ่มใหม่ วนกลับไปเริ่มใหม่ เห็นไหม แล้วทีนี้ แล้วถ้ามันไม่เป็นจริง เพราะฉะนั้น ตรงนี้ก็คือหลังวงเล็บนี้ ก็คือ else if then else else ตรง else เพิ่มปีกกาอีก 1 ครั้งค่ะ แล้วก็ Enter ลงไป แถบคำสั่งหลัง else ปีกกาด้วยนะคะ เอ้ย ไม่ใช่อยู่หลังปีกกา อยู่หลัง else นี่ ข้างบนเป็น True ใช่ไหม ข้างล่าง else ก๊อบมาเลย 2 บรรทัด เปลี่ยนแค่ true เปลี่ยนตรง true เป็น false แค่นั้นเอง Copy มาได้เลยทั้ง 2 เปลี่ยนเฉพาะตรงนี้ l-a-s-e flase F เออ ใช่ไหม f... เอาใหม่สิ f-a ใช่ไหม จำสลับ ขอโทษ เด็ก ๆ ในส่วนของ Update ทีนี้ดู เช็กอะไร เช็กปีกกานะคะ เราเปิด 1 อันที่... ที่ if นะคะ แล้วก็หลัง else อีก 1 ไม่ใช่ 2 1 เพราะ... เพราะนี่ปุ๊บ ก็เป็นของตัวนี้แล้วปิด - ลบออก 1 อันนะคะ ตัวนี้เปิด ปิดที่ตัวนี้ ตัวนี้เปิด เพราะตอนนี้ตัวที่จะปิดตรงนี้อีก 1 อัน ที่ตรงนี้ 1 1 2 เอาไอ้นี่ออก ข้างล่างอีก 1 อันนี้ของตัวนี้ อันนี้เป็นของตัวนี้อีกอันหนึ่งค่ะ ใส่แล้วก็ลืม แล้วก็ลบ แล้วก็มาไล่ใหม่ 1 คู่ 1 คู่แรก คือตัวในนี้ 1 2 3 โอเคครบ Update เสร็จแล้วนะคะ โอเค ไป อันนี้ในส่วนของ Moving กับ Running เฉย ๆ เรายังมี Jump ใช่ไหม Jumpspeed ใส่คอมเม้นเข้าไปก่อน ของ Jump ใส่เงื่อนไขเหมือนกัน if เหมือนกันนะคะ ปีกกาเปิด แล้วก็วงเล็บเปิด เอ้ย วงเล็บ... วงเล็บนะคะ เรียกใช้ characterController ตัวเล็ก characteController ตัวเล็ก . กำหนดให้เป็น isGround Ground ให้เป็นตัวใหญ่ ใส่ปีกกาเปิดอีก 1 ครั้งนะคะ ใส่ปีกกาเปิดอีก 1 ครั้งนะคะ เรียกใช้ moveDirection ตัวเล็ก = n-e-w ค่าใหม่เป็น... Vector Vector ใหญ่ Vector3 นั่นเอง new Vector3 ในวงเล็บ วงเล็บเปิดวงเล็บปิด Input ใหญ่ Input อย่างเดียวนะคะ Input ใหญ่ Input . แล้วก็วงเล็บเปิด Single quote เครื่องหมายคำพูด Horizontal H-o นะลูก H-o หลังวงเล็บปิดตัวที่ 2 นะคะ เครื่องหมายเป็น... กำหนดเป็น 0. 0.0f , เหมือนเดิมนะคะ แล้วก็ก๊อบตรง... ก๊อบตรงตั้งแต่ Input นี่ เปลี่ยนจาก Horizontal เป็น Vertical เปลี่ยน Horizontal เห็นหมดไหมบรรทัดนี้ โอเคไหมคะ ไซซ์เท่านี้เห็นหรือเปล่า กลัวเห็นไม่เต็มบรรทัดก็เลย... ดูได้ไหม โอเค แล้วก็ปิด หลังวงเล็บปิดนะ ใส่ Semi colon แล้วก็ Enter แล้วก็ Tab เข้าไปนะคะ movedirection ตัวเล็ก เลือก Move ตัวเล็กนะคะ + วรรค เครื่องหมายบวก แล้วก็ = speed ตัวเล็ก อย่างนี้นะคะ เลือก speed ตัวเล็ก แล้วก็ปิดด้วย ; เรียก charactercontroller ตัวเล็ก .Move... Move ตัวใหญ่นะ วงเล็บเปิดวงเล็บปิด เรียกใช้ moveDirection โอเค เดี๋ยว ๆ ๆ เอาใหม่ เอาใหม่ charactercontroller .Move ใหญ่ก่อน แล้วก็วงเล็บเปิด วงเล็บปิด moveDirection ตัวเล็ก ไม่อย่างนั้นเดี๋ยวมันไปลบข้างหน้าค่ะ ต้องทำเป็นหยัก ๆ แล้วก็คูณ คูณกับ / ก็คือ * ไปไหนแล้ว คูณกับอะไร Time ที่เรา... Time Time ตัวใหญ่ที่เรากำหนดไว้ แล้วก็ . detailTime นะคะ วงเล็บปิด แล้วก็ ; โอเค ของ Update เดี๋ยวเช็กก่อนนะ Update เราเริ่มที่ Float เด็ก ๆ จัดหน่อยนะคะ เพราะว่า Update มันเริ่ม... เพราะฉะนั้น Float เราต้องเขยิบไป Tab เข้าไปค่ะ จะได้เช็กง่าย ๆ เป็นย่อยของตัวไหน ปิด 1 ปีกกาหายไปอันหนึ่ง โอเค น่าจะ... โอเคนะคะ โอเคแล้วนะ เหลืออีกนิดหนึ่ง จะเสร็จแล้ว จะเสร็จแล้ว ทำให้เสร็จวันนี้ Run แล้วเกิด Bug แล้วเราค่อยไปแก้ อ้าว หายไปไหนแล้ว เดี๋ยว ๆ ๆ โอ๊ย กดผิดอัน อย่าลืม Save นะเด็ก ๆ นึกว่าหาย กดผิดชีวิตเปลี่ยนเลย มี 2 อัน เดี๋ยวไปปิดตัวนี้ก่อน ตัวนี้ของเรา ตัวนี้ล่ะ มา โอเค เพิ่ม เพิ่มอีก 2 ส่วนนะคะ void ต่อจากบรรทัดนี้ นี่ไง มันก็เข้ามาอยู่ในนี้เองอัตโนมัตินะคะ แต่เด็ก ๆ ต้อง Save ก่อนนะ ยัง ๆ ๆ ยังไม่หมด อีก 2 อีก 2 หยักนะคะ นี่ ยังเหลือ Update Movement ก่อน อันนี้อัปเดตธรรมดา Void ค่ะ คลิกเลือก Void อะไร เราจะ Update Movement วงเล็บเปิด วงเล็บปิด แล้วก็ { เรียกใช้ Vector3 เอ้ย Vector3 motion motion = inputVec ตัวนี้นะคะ ที่เราประกาศไว้แล้ว แล้วก็ปิดค่ะ แล้วก็ motion motion ที่เราพิมพ์ไปเมื่อกี้นี้ * Star Star แล้วก็ = วงเล็บเปิด วงเล็บปิด มองไม่เห็นเลย Math F Math ตัวใหญ่นะคะ Match Match นี่ Math แล้วก็ f. .Abs แล้วก็วงเล็บเปิด input ค่ะ input inputVec ตัวนี้เรานะคะ ที่เรา... ไอ้นี่ไว้ inputVec inputVec.x x เล็กที่ประกาศไว้ใน Float วรรค == 1 แล้วก็เครื่องหมาย && 2 ที แล้วก็ Matchf อีกทีหนึ่ง Mathf.Abs เหมือนเดิม ในวงเล็บ inputVec.z z เล็กนะคะ == 1 แล้วก็ตามด้วยเครื่องหมายคำถาม เครื่องหมายคำถามอยู่ไหนเด็ก ๆ เจอแล้วเด็ก ๆ .7f : 1 แล้วก็ปิดนะคะ บรรทัดนี้ยาวหน่อย เช็กอะไร เช็ก inputVector เป็น x นะคะ กับ z ตัวอื่น... พอเราประกาศ void ตัวนี้เสร็จ เด็ก ๆ Copy ตรงนี้ Updeat Movement ไปเรียกใช้ต่อจาก charactercontroller ได้เลย เห็นไหมคะ อย่าลืมใส่อะไร ; ตอนเรียก เวลาเรียกเราต้องมี... นะคะ เหลืออีกอันหนึ่ง เราจะ Update อีกตัวหนึ่งนะ Running ใช่ไหม เหลือ Running Ctrl + S บ่อย ๆ หน่อยเด้อ Save เด้อ Save เด้อ หายมาแล้วจะร้องไห้ move แล้ว void อีกตัวหนึ่งค่ะ เพิ่ม void เหมือนเดิม ตัวนี้ชื่อว่า Rotation rotate ชื่อยาวหน่อยนะ RotateTowordMovementDirection วงเล็บเปิด วงเล็บปิด เป็นคลาส แล้วก็ปีกกาเปิด โอเค กำหนดเงื่อนไขด้วย if ค่ะ if if ในวงเล็บ inputVec เลือก inputVec ไม่เท่ากับ ไม่เท่ากับ ไม่เท่ากับ... เอ้า กดผิด ไปไสล่ะ != Vector3 Enter เลย .zero แล้วก็ปีกกาเปิด อีก 1 ตัว Transform transform ถ้าดู Transformer จะรู้ Transform คืออะไร .rotation = Qua Quatenion i-o-n . sSlerp Slerp วงเล็บเปิด วงเล็บปิด transform คลิกได้เลย transform แล้วก็ rotatetion Quatenion คลิกได้เลย Quatenion ได้เลย เติม r เข้าไป .L ตัวใหญ่ l-o-o-k Rotation ตัวใหญ่ Rotation วงเล็บเปิด เลือกได้เลย โอเคค่ะ โอเค ขอบคุณพี่ล่ามค่ะ สำหรับวันนี้ ขอบคุณค่ะ เดี๋ยวเราคีย์ต่อของเราให้มันเสร็จ สัปดาห์หน้าเราจะได้ไม่ต้องไอ้นี้... ขอบคุณพี่ล่ามค่ะ [สิ้นสุดการถอดความ]