Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138

Как воспроизводить звук при удержании клавиши?

29.07.2022, 20:05. Показов 2729. Ответов 10

Студворк — интернет-сервис помощи студентам
Как воспроизводить звук при удержании клавиши? Есть звук ходьбы, нужно чтобы он воспроизводился когда игрок зажимает одну из клавиш A,D,W,S

Добавлено через 2 часа 24 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class PlayerControler : MonoBehaviour
{
    private bool facingRight = true;
 
    [SerializeField] private float speedMove;
 
    [SerializeField] private AudioSource lampswitch;
 
    [SerializeField] private AudioSource banka;
 
    [SerializeField] private AudioSource creakingdoor;
 
    [SerializeField] private AudioSource screammonster;
 
    [SerializeField] private AudioSource knock;
 
    [SerializeField] private AudioSource piano;
 
    [SerializeField] private AudioSource run;
 
 
private void Start()
    {
 
        anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
        transform.position = startingPos.initialValue;
        rend = GetComponent<SpriteRenderer>();
    }
 
    private void Update()
    {
        rb.velocity = moveInput * speedMove;
        moveVelocity = moveInput.normalized * speedMove;
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
        moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
 
        if (rb.velocity.magnitude > 0)
            anim.SetBool("isRunning", true);
 
        else
            anim.SetBool("isRunning", false);
 
        if (rb.velocity.magnitude > 0)
            anim.SetBool("isstep", true);
        else
            anim.SetBool("isstep", false);
 
        if (facingRight == false && moveInput.x < 0)
            Flip();
        else if (facingRight == true && moveInput.x > 0)
            Flip();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2022, 20:05
Ответы с готовыми решениями:

Включение/выключение света при удержании клавиши
Здравствуйте! Я в разработке пока что еще слаб, но у меня есть цель, которую я хочу довести до конца. Я написал скрипт, который включает...

Нужно написать код который будет деактивировать gameobject и воспроизводить звук при нажатии на E
Здравствуйте помогите пожалуйста с написанием кода в юнити. Нужно написать код который будет деактивировать gameobject и воспроизводить...

Отложенное действие при удержании клавиши мыши
Товарищи, добрый день. Прошу поделиться своей мудростью и научить бездаря. Создал класс - собственный объект формы: class...

10
 Аватар для Uzist
209 / 143 / 68
Регистрация: 09.05.2020
Сообщений: 747
29.07.2022, 22:28
C#
1
2
3
4
5
if(moveInput>0||moveInput)
{
 аудиоСоурс.PlayOneShot(АудиоКлип, время);//
 
}
https://docs.unity3d.com/Scrip... eShot.html
а вообще зачем так много аудиосоурсов, это неправильно, все равно они не могут одновременно работать.Вы лишь зря нагружаете игру
0
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138
30.07.2022, 10:13  [ТС]
А можно как-то без времени сделать? Просто если зажимаем "A" то звук воспроизводится (через луп повторяется) а если отпускаем, то сразу прекращается. И вроде "клип" мне не подойдет. У меня просто один звук бега, а не несколько.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
30.07.2022, 12:00
Лучший ответ Сообщение было отмечено snippet02 как решение

Решение

Цитата Сообщение от snippet02 Посмотреть сообщение
Просто если зажимаем "A" то звук воспроизводится (через луп повторяется) а если отпускаем, то сразу прекращается.
Так и запишите это условие, если нужные клавиши нажаты и звук ещё не воспроизводится, то - запустить звук. А если клавиши не нажаты, то - остановить звук.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using UnityEngine;
 
public class NewBehaviourScript : MonoBehaviour
{
    private AudioSource _audioSource;
    private Vector2 _moveInput;
 
    void Start()
    {
        _audioSource = GetComponent<AudioSource>();
        _audioSource.loop = true;
    }
 
    void Update()
    {
        _moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
 
        if (_moveInput == Vector2.zero)
        {
            _audioSource.Stop();
        }
        else
        {
            if (_audioSource.isPlaying == false)
                _audioSource.Play();
        }
    }
}
0
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138
30.07.2022, 12:50  [ТС]
Как бы звук воспроизводит, но только какие-то хлопки(не само аудио)

Возможно я где-то прокололся

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[SerializeField] private AudioSource _run;
 
 
private void Start()
    {
        _run = GetComponent<AudioSource>();
        _run.loop = true;
 
        anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
        transform.position = startingPos.initialValue;
        rend = GetComponent<SpriteRenderer>();
    }
 
    private void Update()
    {
        rb.velocity = moveInput * speedMove;
        moveVelocity = moveInput.normalized * speedMove;
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
        moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
 
        if (rb.velocity.magnitude > 0)
        {
            anim.SetBool("isRunning", true);
 
            if (_run.isPlaying == false)
                _run.Play();
 
        }
            
 
        else
        {
            
            anim.SetBool("isRunning", false);
            _run.Stop();
        }
0
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138
30.07.2022, 20:57  [ТС]
Все, я разобрался
0
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138
31.07.2022, 13:28  [ТС]
Еще вот такой вопрос. Можно ли как-то менять этот самый звук, когда игрок например входит в триггер?
Например: Сначала он идет(звук ходьбы), как только входим в триггер, то звук переключается на бег
0
 Аватар для Uzist
209 / 143 / 68
Регистрация: 09.05.2020
Сообщений: 747
01.08.2022, 09:39
Цитата Сообщение от snippet02 Посмотреть сообщение
Можно ли как-то менять этот самый звук, когда игрок например входит в триггер?
C#
1
2
3
4
public AudioClip runSound;
 
 
audioSource.clip=runSound;
0
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138
01.08.2022, 21:23  [ТС]
Выдает ошибку: Assets\Scripts\PlayerControler.cs(549,13 ): error CS0103: The name 'audioSource' does not exist in the current context
0
 Аватар для Uzist
209 / 143 / 68
Регистрация: 09.05.2020
Сообщений: 747
02.08.2022, 06:47
Лучший ответ Сообщение было отмечено snippet02 как решение

Решение

snippet02, ну так у тебя переменной audioSource нет, я её просто для примера дал.Поставь свою вместо audioSource
1
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 138
02.08.2022, 10:43  [ТС]
Спасибо, все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2022, 10:43
Помогаю со студенческими работами здесь

Звук при удержании пальца на кнопке
В общем, туплю дико... Как в Unity сделать так, чтоб при удеражнии пальца на кнопке был звук, а при отпускании исчезал?

При удержании любой клавишы фризит звук и лагает
Здравствуйте. После обновления драйверов видеокарты Intel Graphics 3000 в играх и не только, во время удержания рипит звук и лагают игры....

Как можно воспроизводить звук используя библиотеку Audio? (C#)
Как можно воспроизводить звук в SFML используя его библиотеку Audio. Можете пожалуйста привести пример воспроизведения звука(а не музыки)....

Снимать звук с микрофона и воспроизводить звук из консоли
Гуру, подскажите, тяжело ли подобное? Накапливать в буферах, обрабатывать и воспроизводить измененное... В делфи когда-то подбное...

ПК перестал воспроизводить звук
Вот и суть проблемы, перестали работать колонки, так же и с помощью наушников звук не идет( в наушниках наблюдаются писк) днем было все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru