ต้องการสคริป Foot stepครับ - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: Publica Foundation (https://irpg.in.th/forum-23.html) +--- Forum: Request Ranger Center (https://irpg.in.th/forum-24.html) +--- Thread: ต้องการสคริป Foot stepครับ (/thread-1839.html) |
ต้องการสคริป Foot stepครับ - santa555a - 05-03-2014 ต้องการสคลิปFoot stepที่เวลาเดินมีเสียง ต็อก แต็ก กรอกแกร็ก แฟ็บ แฟ็บ อ่าครับ นั่งนึกที่ไรก็นึกมิออก และก็ต้องการสคลิปวิ่งครับ อันนี้ผมก็นึกมิออกเหมือนกัน ยังไงก็ช่วยหน่อยนะครับ นึกไม่ออกจริงๆ RE: ต้องการสคริป Foot stepครับ - Cliff - 05-06-2014 ถ้าเป็นผม จะออกแบบให้ส่วนการควบคุมการเดิน ผูกกับ ตัวเล่นเสียง ครับ และตั้งให้ตัวเล่นเสียง ผูกกับ เสียงเดินต่างๆ(กรณี มีหลายเสียง) แล้วตั้ง Mode การเล่นเป็น Loop (ตั้งค่า mode ใน inspector) (เพิ่มเติม ลักษณะ clip เสียงควรจะมีแบ่งช่วงการเดินด้วย เช่น ติ๊ก_ ติ๊ก_ ติ๊ก_) และเขียนให้ เมื่อ user บังคับตัวละครให้เดิน ก็ให้เริ่มเล่นเสียงครับ พอหยุดก็ให้หยุดเล่นเสียง พอเดินอีก ก็ให้เล่นเสียงเดินตั้งแต่เริ่มใหม่อีกครั้ง เป็นอย่างนี้ไปเรื่อยๆครับ ส่วนเรื่องเสียงเดินเปลี่ยนตามที่ต่างๆ ให้ลองใช้ Collider ของตัวละครเช็คว่า ยืนอยู่ตรงไหน (Tag หรือ Layer อะไร) และให้เล่นเสียงต่างๆกันไปครับ ส่วนเรื่อง การวิ่ง ถ้าใช้พวก CharacterController, FPSController, CharacterMotor (Asset > Import > CharacterController เป็น default ของ unity) ให้ลองเขียนเข้าไปปรับ ความเร็วใน CharacterMotor ครับ movement.maxForwardSpeed ความเร็วไปข้างหน้า movement.maxSidewaysSpeed ความเร็วเดินข้างๆ movement.maxBackwardsSpeed ความเร็วถอยหลัง ถ้าเขียนพวกความเร็วเอง ถ้าใช้ท่า tranform.position += direction * Time.deltaTime; ให้ทำตัวแปร speed เข้าไปด้วยครับ tranform.position += direction * Time.deltaTime * speed; ส่วนเรื่องเสียงตอนวิ่ง ก็ให้เขียนเช็คว่าวิ่งอยู่หรือไม่ แล้วก็เล่นเสียงแบบวิ่ง ถ้าไม่ได้วิ่งก็เล่นแบบเดินครับ RE: ต้องการสคริป Foot stepครับ - hackerdew - 05-19-2014 เลียนแบบคลิปนี้เลยฮะ แล้วนำเอาไปประยุกต์นะ http://www.youtube.com/watch?v=-JFW1cbuJww RE: ต้องการสคริป Foot stepครับ - lightwolfz - 06-01-2014 ถ้าอยากได้แบบหลายเสียงสลับกันลองใช้ตัวนี้ดูก็ได้นะครับ /** * Script made by OMA [www.armedunity.com] **/ var concrete : AudioClip[]; var wood : AudioClip[]; var dirt : AudioClip[]; var metal : AudioClip[]; private var step : boolean = true; var audioStepLengthWalk : float = 0.45; var audioStepLengthRun : float = 0.25; var walkSpeed : float = 8.0; var runSpeed : float = 12.0; function OnCollisionStay (col : Collision) { var controller : RigidController = GetComponent(RigidController); if (controller.grounded && rigidbody.velocity.magnitude > (walkSpeed-2) && rigidbody.velocity.magnitude < (walkSpeed+2) && col.gameObject.tag == "Concrete" && step == true || controller.grounded && rigidbody.velocity.magnitude < (walkSpeed+2) && rigidbody.velocity.magnitude > (walkSpeed-2) && col.gameObject.tag == "Untagged" && step == true ) { WalkOnConcrete(); }else if (controller.grounded && rigidbody.velocity.magnitude > (runSpeed-2) && col.gameObject.tag == "Concrete" && step == true || controller.grounded && rigidbody.velocity.magnitude > (runSpeed-2) && col.gameObject.tag == "Untagged" && step == true ) { RunOnConcrete(); }else if (controller.grounded && rigidbody.velocity.magnitude > (walkSpeed-2) && rigidbody.velocity.magnitude < (walkSpeed+2) && col.gameObject.tag == "Wood" && step == true) { WalkOnWood(); }else if (controller.grounded && rigidbody.velocity.magnitude > (runSpeed-2) && col.gameObject.tag == "Wood" && step == true){ RunOnWood(); }else if (controller.grounded && rigidbody.velocity.magnitude > (walkSpeed-2) && rigidbody.velocity.magnitude < (walkSpeed+2) && col.gameObject.tag == "Dirt" && step == true) { WalkOnDirt(); }else if (controller.grounded && rigidbody.velocity.magnitude > (runSpeed-2) && col.gameObject.tag == "Dirt" && step == true){ RunOnDirt(); }else if (controller.grounded && rigidbody.velocity.magnitude > (walkSpeed-2) && rigidbody.velocity.magnitude < (walkSpeed+2) && col.gameObject.tag == "Metal" && step == true) { WalkOnMetal(); }else if (controller.grounded && rigidbody.velocity.magnitude > (runSpeed-2) && col.gameObject.tag == "Metal" && step == true){ RunOnMetal(); } } /////////////////////////////////// CONCRETE //////////////////////////////////////// function WalkOnConcrete() { step = false; audio.clip = concrete[Random.Range(0, concrete.length)]; audio.volume = .1; audio.Play(); yield WaitForSeconds (audioStepLengthWalk); step = true; } function RunOnConcrete() { step = false; audio.clip = concrete[Random.Range(0, concrete.length)]; audio.volume = .3; audio.Play(); yield WaitForSeconds (audioStepLengthRun); step = true; } ////////////////////////////////// WOOD ///////////////////////////////////////////// function WalkOnWood() { step = false; audio.clip = wood[Random.Range(0, wood.length)]; audio.volume = .1; audio.Play(); yield WaitForSeconds (audioStepLengthWalk); step = true; } function RunOnWood() { step = false; audio.clip = wood[Random.Range(0, wood.length)]; audio.volume = .3; audio.Play(); yield WaitForSeconds (audioStepLengthRun); step = true; } /////////////////////////////////// DIRT ////////////////////////////////////////////// function WalkOnDirt() { step = false; audio.clip = dirt[Random.Range(0, dirt.length)]; audio.volume = .1; audio.Play(); yield WaitForSeconds (audioStepLengthWalk); step = true; } function RunOnDirt() { step = false; audio.clip = dirt[Random.Range(0, dirt.length)]; audio.volume = .3; audio.Play(); yield WaitForSeconds (audioStepLengthRun); step = true; } ////////////////////////////////// METAL /////////////////////////////////////////////// function WalkOnMetal() { step = false; audio.clip = metal[Random.Range(0, metal.length)]; audio.volume = .1; audio.Play(); yield WaitForSeconds (audioStepLengthWalk); step = true; } function RunOnMetal() { step = false; audio.clip = metal[Random.Range(0, metal.length)]; audio.volume = .3; audio.Play(); yield WaitForSeconds (audioStepLengthRun); step = true; } @script RequireComponent(AudioSource) ถ้าอยากเปลี่ยนเสียงก็ทำ collider แล้วก็เปลี่ยนแท็กเอาครับ ผมเอามาจากฝรั่งเครดิตอยู่ในสคริปต์เลยครับ ขอให้สนุกนะครับ |