Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Taiga · Aug 27, 2014 at 03:02 PM · collisionaudio

I want to make my audio play only once

I have a fence in my game and if my player collides with the fence, the audio of opening fence will be called. After that if my player collides with my fence, the audio will be played again. I don't want to make my audio play more than once. By the way my program is this.

alt text

screen shot 2014-08-27 at 21.25.11.png (101.5 kB)
Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Landern · Aug 27, 2014 at 03:07 PM 0
Share

Is there a way to know if the fence is open and constrain the audio.Play() to only a one shot if the fence isn't open? Does the fence have scripts attached to it?

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by TheCatProblem · Aug 27, 2014 at 03:11 PM

One way to accomplish this would be to simply have a boolean variable that gets checked before playing the sound and set when the sound plays. Something like this:

 bool soundHasPlayed = false;
 
 function OnCollisionEnter(){
     if (!soundHasPlayed){
         audio.Play();
         soundHasPlayed = true;
     }
 }



Comment
Add comment · Show 5 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Taiga · Aug 27, 2014 at 03:14 PM 0
Share

where should I put the (bool soundHasPlayed = false;) bit? sorry, I am a beginner of unity

avatar image TheCatProblem · Aug 27, 2014 at 08:05 PM 0
Share

The declaration of soundHasPlayed would go inside your script class but outside of any functions (this makes it a member variable of your script class, which allows any function within your script - e.g., OnCollisionEnter - to access it).

You might find this tutorial video helpful. (In the script example below the video, the variable myInt is a member variable.)

avatar image Taiga · Aug 28, 2014 at 02:19 AM 0
Share

How ever it says it needs a semicolon at the end when it is already there

avatar image TheCatProblem · Aug 28, 2014 at 02:25 PM 0
Share

What code gives you the semicolon warning/error? One point is that the code I've written is in C#; if you're using Unity's version of JavaScript the declaration would be var soundHasPlayed : bool = false; ins$$anonymous$$d.

avatar image Taiga · Aug 28, 2014 at 11:06 PM 0
Share

Thanks it worked

avatar image
2

Answer by Nick4 · Aug 27, 2014 at 03:09 PM

You mean OnCollisionEnter gets called twice? If that's the case, I'm not sure what it is but here's a work-around :

 // If audio isn't already playing, play it.
 if(!audio.isPlaying)
 {
     audio.Play();
 }
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Audio Script 1 Answer

Sound is stopping prematurely (Read Description) 0 Answers

Audio not playing on collision 0 Answers

Audio. How to play a sound file when triggered by collision? 3 Answers

Collider isTrigger for audio clip lets me pass through object. How to fix? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges