Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unity ต้องการสคริป Foot stepครับ
#1
Brick 
ต้องการสคลิปFoot stepที่เวลาเดินมีเสียง ต็อก แต็ก กรอกแกร็ก แฟ็บ แฟ็บ
อ่าครับ

นั่งนึกที่ไรก็นึกมิออก
และก็ต้องการสคลิปวิ่งครับ อันนี้ผมก็นึกมิออกเหมือนกัน
ยังไงก็ช่วยหน่อยนะครับ นึกไม่ออกจริงๆ
โน่ววว

[Image: 50840484]

เกมที่กำลังทำlast island
กระทู้กาฟ
http://irpg.in.th/thread-1828.html
แฟนเพจ
https://www.facebook.com/nukcashgamenew
[-] The following 1 user says Thank You to santa555a for this post:
  • นิราจ
Reply
#2
ถ้าเป็นผม จะออกแบบให้ส่วนการควบคุมการเดิน ผูกกับ ตัวเล่นเสียง ครับ
และตั้งให้ตัวเล่นเสียง ผูกกับ เสียงเดินต่างๆ(กรณี มีหลายเสียง)
แล้วตั้ง 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;

ส่วนเรื่องเสียงตอนวิ่ง
ก็ให้เขียนเช็คว่าวิ่งอยู่หรือไม่ แล้วก็เล่นเสียงแบบวิ่ง ถ้าไม่ได้วิ่งก็เล่นแบบเดินครับ
Reply
#3
เลียนแบบคลิปนี้เลยฮะ แล้วนำเอาไปประยุกต์นะ
http://www.youtube.com/watch?v=-JFW1cbuJww
[On Going]
PROJECT : DownMorana 3 : Revenge [Status : 50%]
PROJECT : SEVEN ROOM (Horror) [Status : 30%]

[Complete]
มินิเกมคริสต์มาส : SickSanta : วันนี้พี่ขอเป็นซานต้านะ
Reply
#4
ถ้าอยากได้แบบหลายเสียงสลับกันลองใช้ตัวนี้ดูก็ได้นะครับ

/**
* 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 แล้วก็เปลี่ยนแท็กเอาครับ ผมเอามาจากฝรั่งเครดิตอยู่ในสคริปต์เลยครับ
ขอให้สนุกนะครับ
Y me gusta muchoY me gusta muchoY me gusta muchoY me gusta muchoY me gusta muchoY me gusta mucho
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)