質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1131閲覧

足音の再生について。異なるマテリアルで~~

1000k_k_y_a_n

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/06/06 09:48

編集2021/06/09 05:53

問題点

Animation Eventで下記のコードの下のほうにあるFootStep関数を呼び出しているのですが、Update関数の中ほどにあるAudioClipの変更が適応されません。

C#のコード

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Controller : MonoBehaviour 6{ 7 Animator animator; 8 9 [Header("GameObject")] 10 [SerializeField] GameObject mousePos; 11 [SerializeField] GameObject bullet; 12 [SerializeField] GameObject muzzlePoint; 13 [SerializeField] GameObject bulletParent; 14 private GameObject audioObj; 15 private Rigidbody rb; 16 private CharacterController cc; 17 18 [Space(1)] 19 20 [Header("Move")] 21 [SerializeField] float speed; 22 [SerializeField] float bulletSpeed; 23 [SerializeField] float gravity; 24 private float footStepInterval; 25 private float horizontral; 26 private float vertical; 27 28 [Header("Sounds")] 29 private AudioSource[] ad; 30 //--------------------------- 31 private AudioSource GunReady; 32 private bool playGunAudio = true; 33 34 private AudioSource Shot; 35 private bool playShotAudio = true; 36 37 private AudioSource Walk; 38 private bool playWalkAudio = true; 39 //--------------------------- 40 private AudioClip gunReadyClip; 41 private AudioClip shotClip; 42 private AudioClip walkClip; 43 44 private PlayerSounds playerSounds; 45 46 private RaycastHit groundHit; 47 48 private void Awake() 49 { 50 audioObj = transform.Find("AudioObj").gameObject; 51 52 rb = GetComponent<Rigidbody>(); 53 cc = GetComponent<CharacterController>(); 54 animator = GetComponent<Animator>(); 55 playerSounds = audioObj.GetComponent<PlayerSounds>(); 56 57 ad = audioObj.GetComponents<AudioSource>(); 58 GunReady = ad[0]; 59 gunReadyClip = playerSounds.gunReadyClip; 60 Shot = ad[1]; 61 shotClip = playerSounds.shotClip; 62 Walk = ad[2]; 63 64 } 65 66 void Update() 67 { 68 horizontral = Input.GetAxis("Horizontal"); 69 vertical = Input.GetAxis("Vertical"); 70 71 //動き 72 Vector3 move = new Vector3(horizontral, 0, vertical); 73 move.y -= gravity; 74 cc.Move(move * speed * Time.deltaTime); 75 animator.SetFloat("speed_Hor", horizontral); 76 animator.SetFloat("speed_Ver", vertical); 77 78 transform.LookAt(mousePos.transform); 79 80 if (Mathf.Abs(horizontral) > 0 || Mathf.Abs(vertical) > 0) 81 { 82 animator.SetBool("IsWalk", true); 83//------------------------------------------------ここ------------------------------------ 84 if(Physics.Raycast(transform.position, Vector3.down, out groundHit, 1.0f))//足音 85 { 86 string tag = groundHit.collider.tag; 87 switch (tag) 88 { 89 case null: walkClip = playerSounds.AspfaltWalkClip; 90 break; 91 92 case "Aspfalt": walkClip = playerSounds.AspfaltWalkClip; 93 break; 94 95 case "Wood": walkClip = playerSounds.WoodWalkClip; 96 break; 97 98 case "Soil": walkClip = playerSounds.SoilWalkClip; 99 break; 100 } 101 } 102 103 } 104 else 105 { 106 Walk.Stop(); 107 animator.SetBool("IsWalk", false); 108 } 109//------------------------------------------------------------------------------- 110 111 if (Input.GetMouseButton(1))//構え 112 { 113 animator.SetBool("IsReady", true); 114 115 if(playGunAudio)//一度のみ再生 116 { 117 GunReady.PlayOneShot(gunReadyClip); 118 playGunAudio = false; 119 } 120 if (Input.GetMouseButtonDown(0))//射撃 121 { 122 GameObject bullets = Instantiate<GameObject>(bullet, muzzlePoint.transform.position, Quaternion.identity); 123 bullets.GetComponent<Rigidbody>().velocity = muzzlePoint.transform.forward * bulletSpeed * Time.deltaTime; 124 bullets.transform.parent = bulletParent.transform; 125 126 if (playShotAudio) 127 { 128 Shot.PlayOneShot(shotClip); 129 playShotAudio = false; 130 } 131 } 132 } 133 else 134 { 135 animator.SetBool("IsReady", false); 136 playGunAudio = true; 137 } 138 } 139 140//-----------------------ここ----------------------- 141 public void FootStep() 142 { 143 Walk.PlayScheduled(20.5f); 144 } 145} 146//------------------------------------------------

イベントの位置
![イメージ説明]

イメージ説明

詳細

使用Ver Unity 2019.4.17f1 Personal

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/06 11:51

C 言語は本件とどう関係するのでしょう。
sakura_hana

2021/06/08 00:39

Debug.Logを入れる等して、if文の中に入っているか、「transform.position」や「tag」はどうなっているか等を確認してください。 transform.positionが想定よりも上でRaycastが地面まで届いていない、transform.positionが想定よりも下で地面より下からRayを飛ばしているせいで当たらない等が考えられます。
1000k_k_y_a_n

2021/06/09 05:38

transform.positionを見直してみた所、無事に足音が鳴るようになりました。 ですが、今度は同時に呼ばれているのか音が重なったようになってしまいました。
m.ts10806

2021/06/09 05:45

質問は編集できますので、タグ含めて調整してください。
sakura_hana

2021/06/10 00:13

何の音が重なっているのですか? 歩き用のAudioSourceは1つなので、足音が複数鳴ることは基本的にありえないと思います。このコンポーネントとAudioSourceがシーン上にもう1セットある等も含めて確認してください。
1000k_k_y_a_n

2021/06/17 08:42

結局、足跡の実装はあきらめることにしました。ありがとうございました。
guest

回答1

0

自己解決

あきらめました。解決方法を考えてくださった方々、ありがとうございました。

投稿2021/06/17 08:44

1000k_k_y_a_n

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問