unity 走在地板上发出声音 环境音配置

在这里插入图片描述

放上以下脚本即可。

public class Terrain_Sound_By_Distance : MonoBehaviour {

	// The sound clip to play when Colliding.
	public AudioClip soundClip;
	// The min and max pitch for when this sound is played.
	public float minPitch = 1;
	public float maxPitch = 1;

	// The distance before playing another sound
	public float distance = 1;
	// The distance variable that holds the current distance.
	private float currDistance;

	// Previous position.
	private Vector2 prev;
	// Current position.
	private Vector2 curr;


	void Awake(){
		// Check for mistakes.
		DebugCheck();
	}

	void OnTriggerEnter2D(Collider2D coll){
		// IF there is a sound to play.
		if(soundClip != null && coll.gameObject.tag == "Player"){
			// Set the start distance.
			curr = coll.transform.position;
		}
	}

	void OnTriggerStay2D(Collider2D coll){
		if(coll.gameObject.tag == "Player"){
			// The new is the old.
			prev = curr;
			// Get the current distance.
			curr = coll.transform.position;
			// Compare distances.
			currDistance += Vector2.Distance(curr, prev);

			// IF we have traveled the required amount.
			if(currDistance > distance){
				// Play the sound.
				AudioSource soundSource = Grid.soundManager.PlaySound(soundClip, coll.transform.position, minPitch, maxPitch);
				// Set the parent of this gameobject.
				Grid.helper.SetParentTransform(coll.gameObject.transform, soundSource.gameObject);
				// Reset currDistance.
				currDistance = 0;
			}
		}
	}

	void DebugCheck(){
		// IF there isn't a soundClip we need to let the user know.
		if(soundClip == null){
			Grid.helper.DebugErrorCheck(46, this.GetType(), gameObject);
		}
		// IF the distance is 0 there will be a spam, notify to make greater than 0.
		if(distance == 0){
			Grid.helper.DebugErrorCheck(47, this.GetType(), gameObject);
		}
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值