กรุณาเลือก อุปกรณ์เคลื่อนที่ | แสดงผลรูแบบคอมพิวเตอร์
ดู: 664|ตอบ: 3

NPC การเคลื่อนที่ (#1)

[คัดลอกลิงก์]
 
 มีนามว่าsitplay 
 สมาชิกคนที่680 
 เพศ 
 ระดับการอ่าน10 
กระทู้ 
 ค่าประสบการณ์ 
 ทอง 
 ชื่อเสียง 
 ออนไลน์ 

คุณยังไม่ได้ใช้เหรียญ
กรุณาคลิกที่นี่เพื่อใช้เหรียญ

     
โพสต์เมื่อ 2017-8-15 11:22:46 | แสดงโพสต์ทั้งหมด |โหมดอ่าน
แก้ไขครั้งสุดท้ายโดย sitplay เมื่อ 2017-8-15 11:33


NPC  การเคลื่อนที่ (#1)

Non-player character ก็คือ ตัวละครที่ผู้เล่นไม่ได้ควบคุม  บทนี้จะพูดถึงการสร้าง NPC  โดย ผู้เขียนจะจำลองการเคลื่อนที่ ง่าย ๆ ดังนี้
    กำหนดให้มีการเคลื่อนที่ในทิศทาง  UP,LEFT,DOWN,RIGHT โดยจะกำหนด ค่าตามทิศทางดังนี้
        up=0
        left=1
        down=2
        right = 3
        idle=-1

     1. นำภาพ NPC ตัวอย่าง เข้า โดยกำหนดท่าทางดังนี้ กำนหด orgin ตรงกลาง
        spr_npc_walk_up_1
       spr_npc_walk_left_1
       spr_npc_walk_down_1
       spr_npc_walk_right_1


   

     2. ทำการสร้าง object  obj_npc   อ้างอิงไปยัง sprite  spr_npc_walk_down_1
     3. กำหนดตัวแปรเริ่มต้น  code event create  
      
  1. image_speed=0.15 //กำหนดความเร็ว sprite
  2. spd=4  //ความเร็วเคลื่อนที่

  3. //กำหนดตัวแปร
  4. enum npc_state {
  5.   idle=-1,
  6.   up=0,
  7.   left=1,
  8.   down=2,
  9.   right=3
  10. }

  11. //กำหนดตัวแปร sprite
  12. sprUp=spr_npc_walk_up_1
  13. sprLeft=spr_npc_walk_left_1
  14. sprDown=spr_npc_walk_down_1
  15. sprRight=spr_npc_walk_right_1

  16. //กำหนดสถานะของ npc เริ่มต้น
  17. npcState=npc_state.idle;
คัดลอกไปที่คลิปบอร์ด
4. สร้าง event  alarm[0] เพิ่มทำการ สุ่ม state


  1. npcState = choose(-1,0,1,2,3);
คัดลอกไปที่คลิปบอร์ด

5. สร้าง event step



  1. if !alarm[0] alarm[0]=room_speed;
  2. switch(npcState){
  3.   case npc_state.idle:
  4.     speed=0
  5.   break;
  6.   case npc_state.up:
  7.   sprite_index=sprUp
  8.   y-=spd
  9.   break;
  10.   case npc_state.left:
  11.   sprite_index=sprLeft;
  12.   x-=spd
  13.   break;
  14.   case npc_state.down:
  15.   sprite_index=sprDown;
  16.   y+=spd
  17.   break;
  18.   case npc_state.right:
  19.   sprite_index=sprRight;
  20.   x+=spd
  21.   break;
  22. }
คัดลอกไปที่คลิปบอร์ด


5. ไปที่ room rm_test  ทดสอบ obj_npc ดูว่าทำงานถูกต้องหรือไม่  




-End-







 
 มีนามว่าgol-a-khung 
 สมาชิกคนที่
 เพศ 
 ระดับการอ่าน200 
กระทู้ 
 ค่าประสบการณ์ 
 ทอง 
 ชื่อเสียง 
 ออนไลน์ 

คุณยังไม่ได้ใช้เหรียญ
กรุณาคลิกที่นี่เพื่อใช้เหรียญ

     
โพสต์เมื่อ 2017-8-15 11:37:30 | แสดงโพสต์ทั้งหมด
สุดยอดๆ ตามๆ
 
 มีนามว่าarkman 
 สมาชิกคนที่44 
 เพศ 
 ระดับการอ่าน50 
กระทู้ 
 ค่าประสบการณ์ 
 ทอง 
 ชื่อเสียง 
 ออนไลน์ 

คุณยังไม่ได้ใช้เหรียญ
กรุณาคลิกที่นี่เพื่อใช้เหรียญ

     
โพสต์เมื่อ 2017-8-15 16:06:33 | แสดงโพสต์ทั้งหมด
เยี่ยมเลยครับ เป็นบทความนึงที่สำคัญครับผม
 
 มีนามว่าyangjj307 
 สมาชิกคนที่6408 
 เพศ 
 ระดับการอ่าน10 
กระทู้ 
 ค่าประสบการณ์ 
 ทอง 
 ชื่อเสียง 
 ออนไลน์ 

คุณยังไม่ได้ใช้เหรียญ
กรุณาคลิกที่นี่เพื่อใช้เหรียญ

     
โพสต์เมื่อ 2022-9-14 10:55:03 | แสดงโพสต์ทั้งหมด
สุดยอด
คุณต้องเข้าสู่ระบบก่อนจึงจะสามารถตอบกลับโพสต์นี้ได้ เข้าสู่ระบบ | สมัครสมาชิก

รายละเอียดเครดิต

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้