public void Move() { int stt = sun; scoreText.text = stt.ToString(); if (Input.GetKey(KeyCode.W)) { direction = 0; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[2]; this.gameObject.transform.Translate(Vector3.up * speed * Time.deltaTime); PlayFootstepSound(); } else if (Input.GetKey(KeyCode.S)) { this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[0]; direction = 2; this.gameObject.transform.Translate(Vector3.down * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.D)) { direction = 3; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[1]; this.gameObject.transform.Translate(Vector3.right * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.A)) { direction = 1; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[3]; this.gameObject.transform.Translate(Vector3.left * speed * Time.deltaTime); } // 攻击 if (Input.GetMouseButtonDown(0)) { // 处理鼠标左键点击事件 GameObject ins = Instantiate(bulletPrefab); Vector2 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); ins.GetComponent<Blogs>().clickPosition = clickPosition; if (direction == 0) { ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y + 0.15f); } else if (direction == 2) { ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y - 0.15f); } else if (direction == 3) { ins.transform.position = new Vector3(this.gameObject.transform.position.x + 0.15f, this.gameObject.transform.position.y); } else if (direction == 1) { ins.transform.position = new Vector3(this.gameObject.transform.position.x - 0.15f, this.gameObject.transform.position.y); } } }增加一个脚步声
时间: 2023-06-20 10:09:18 浏览: 48
可以在Move()方法中调用一个PlayFootstepSound()方法来播放脚步声。可以在该方法中使用AudioSource来播放脚步声音效。例如:
private AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void PlayFootstepSound()
{
audioSource.Play();
}
需要注意的是,在播放脚步声音效之前,需要先为角色添加一个AudioSource组件,并在Start()方法中获取该组件。此外,还需要为角色添加脚步声音效文件。
相关问题
public void Move() { int stt = sun; scoreText.text = stt.ToString(); if (Input.GetKey(KeyCode.W)) { direction = 0; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[2]; this.gameObject.transform.Translate(Vector3.up * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.S)) { this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[0]; direction = 2; this.gameObject.transform.Translate(Vector3.down * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.D)) { direction = 3; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[1]; this.gameObject.transform.Translate(Vector3.right * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.A)) { direction = 1; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[3]; this.gameObject.transform.Translate(Vector3.left * speed * Time.deltaTime); } // 攻击 if (Input.GetMouseButtonDown(0)) { // 处理鼠标左键点击事件 GameObject ins = Instantiate(bulletPrefab); Vector2 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); ins.GetComponent<Blogs>().clickPosition = clickPosition; if (direction == 0) { ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y + 0.15f); } else if (direction == 2) { ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y - 0.15f); } else if (direction == 3) { ins.transform.position = new Vector3(this.gameObject.transform.position.x + 0.15f, this.gameObject.transform.position.y); } else if (direction == 1) { ins.transform.position = new Vector3(this.gameObject.transform.position.x - 0.15f, this.gameObject.transform.position.y); } } }增加移动音效
你可以试试在移动的每个方向上都加上一个音效,比如在按下 W 键时播放一个向上移动的音效,在按下 A 键时播放一个向左移动的音效等等。你可以使用 AudioClip 类来加载音频文件,使用 AudioSource 类来播放音效。具体实现可以参考以下代码:
public AudioClip moveSound;
public AudioSource audioSource;
public void Move() {
int stt = sun;
scoreText.text = stt.ToString();
if (Input.GetKey(KeyCode.W)) {
direction = 0;
this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[2];
this.gameObject.transform.Translate(Vector3.up * speed * Time.deltaTime);
if (!audioSource.isPlaying) {
audioSource.clip = moveSound;
audioSource.Play();
}
} else if (Input.GetKey(KeyCode.S)) {
this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[0];
direction = 2;
this.gameObject.transform.Translate(Vector3.down * speed * Time.deltaTime);
if (!audioSource.isPlaying) {
audioSource.clip = moveSound;
audioSource.Play();
}
} else if (Input.GetKey(KeyCode.D)) {
direction = 3;
this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[1];
this.gameObject.transform.Translate(Vector3.right * speed * Time.deltaTime);
if (!audioSource.isPlaying) {
audioSource.clip = moveSound;
audioSource.Play();
}
} else if (Input.GetKey(KeyCode.A)) {
direction = 1;
this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[3];
this.gameObject.transform.Translate(Vector3.left * speed * Time.deltaTime);
if (!audioSource.isPlaying) {
audioSource.clip = moveSound;
audioSource.Play();
}
}
// 攻击
if (Input.GetMouseButtonDown(0)) {
// 处理鼠标左键点击事件
GameObject ins = Instantiate(bulletPrefab);
Vector2 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
ins.GetComponent<Blogs>().clickPosition = clickPosition;
if (direction == 0) {
ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y + 0.15f);
} else if (direction == 2) {
ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y - 0.15f);
} else if (direction == 3) {
ins.transform.position = new Vector3(this.gameObject.transform.position.x + 0.15f, this.gameObject.transform.position.y);
} else if (direction == 1) {
ins.transform.position = new Vector3(this.gameObject.transform.position.x - 0.15f, this.gameObject.transform.position.y);
}
}
}
public void Move() { int stt = sun; scoreText.text = stt.ToString(); if (Input.GetKey(KeyCode.W)) { direction = 0; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[2]; this.gameObject.transform.Translate(Vector3.up * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.S)) { this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[0]; direction = 2; this.gameObject.transform.Translate(Vector3.down * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.D)) { direction = 3; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[1]; this.gameObject.transform.Translate(Vector3.right * speed * Time.deltaTime); } else if (Input.GetKey(KeyCode.A)) { direction = 1; this.gameObject.GetComponent<SpriteRenderer>().sprite = prota[3]; this.gameObject.transform.Translate(Vector3.left * speed * Time.deltaTime); } // 播放脚步声 if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D)) { if (!audioSource.isPlaying) { audioSource.clip = footstepSound; audioSource.loop = true; audioSource.Play(); } } else { audioSource.Stop(); } // 攻击 if (Input.GetMouseButtonDown(0)) { // 处理鼠标左键点击事件 GameObject ins = Instantiate(bulletPrefab); Vector2 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); ins.GetComponent<Blogs>().clickPosition = clickPosition; if (direction == 0) { ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y + 0.15f); } else if (direction == 2) { ins.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y - 0.15f); } else if (direction == 3) { ins.transform.position = new Vector3(this.gameObject.transform.position.x + 0.15f, this.gameObject.transform.position.y); } else if (direction == 1) { ins.transform.position = new Vector3(this.gameObject.transform.position.x - 0.15f, this.gameObject.transform.position.y); } } }public void OnCollisionEnter2D(Collision2D collision) { if(collision.gameObject.tag == "GoldCoin") { Destroy(collision.gameObject); sun = sun + 1; if (!audioSource.isPlaying) { audioSource.clip = shique; audioSource.loop = true; audioSource.Play(); } } else { audioSource.Stop(); } //判断是否遭受攻击 if (collision.gameObject.tag == "zhi") { Destroy(collision.gameObject); hp = hp - 1; } // 检测碰撞物体的标签 if (collision.gameObject.tag == "zhi2") { // 忽略该碰撞 Physics2D.IgnoreCollision(collision.collider, GetComponent<Collider2D>()); } }
这段代码主要是一个角色的移动和攻击行为,使用了键盘和鼠标输入来响应玩家操作。角色可以向上、下、左、右移动,并且在移动时会播放脚步声音效。角色还可以使用鼠标左键攻击,发射一个子弹。如果角色与"GoldCoin"标签的游戏对象碰撞,就会增加分数,如果角色与"zhi"标签的游戏对象碰撞,就会减少血量。如果角色与"zhi2"标签的游戏对象碰撞,就会忽略该碰撞。
阅读全文