動く敵の作成②(コルーチンで動きを作る)
![76fc743a b338 4293 8304 744b469bcb7e](https://codegenius.org/uploads/slide/image/7588/76fc743a-b338-4293-8304-744b469bcb7e.jpeg)
コルーチンで動く敵を作る
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveEnemyA : EnemyBase // 復習(クラスの継承)
{
private float x;
private float z;
private float speed;
void Start()
{
HP = 1;
// ★コルーチンの処理を開始する
StartCoroutine(MoveE());
}
void Update()
{
transform.Translate(new Vector3(x, 0, z) * speed * Time.deltaTime, Space.World);
}
// ★コルーチン(処理を途中で中断させることができる仕組み)
private IEnumerator MoveE()
{
// 初めに、speed「5」の速度で、下方向に移動する
x = 0;
z = -1;
speed = 5;
// 「3秒」経過したら、上記の処理を中断して・・・・、
yield return new WaitForSeconds(3f);
// 今度は下記の処理を行う
// speed「10」の速度で、右方向に移動する
x = 1;
z = 0;
speed = 10;
}
}
![Fdfd0c04 d4c6 4e53 a474 f3b721d9b110](https://codegenius.org/uploads/slide/image/7589/fdfd0c04-d4c6-4e53-a474-f3b721d9b110.jpeg)
![83678dfe f79f 43ba 93de bffa29d686d5](https://codegenius.org/uploads/slide/image/7590/83678dfe-f79f-43ba-93de-bffa29d686d5.jpeg)
![1295f735 023e 4fc5 aa7a 373cd6ae5d7f](https://codegenius.org/uploads/slide/image/7591/1295f735-023e-4fc5-aa7a-373cd6ae5d7f.jpeg)
![6e38fa5f 0c03 4fb4 8f04 af793adfca4d](https://codegenius.org/uploads/slide/image/7592/6e38fa5f-0c03-4fb4-8f04-af793adfca4d.jpeg)
![E7d10ed2 e2d3 4d26 bf21 402d1b73f33c](https://codegenius.org/uploads/slide/image/7593/e7d10ed2-e2d3-4d26-bf21-402d1b73f33c.jpeg)
![1932d78a 3dbc 463d a355 01e526bd91ce](https://codegenius.org/uploads/slide/image/7594/1932d78a-3dbc-463d-a355-01e526bd91ce.jpeg)
![43d83103 efe7 477c 8b6a 0de0ba22c971](https://codegenius.org/uploads/slide/image/7595/43d83103-efe7-477c-8b6a-0de0ba22c971.jpeg)
![7d7a048b 6b5c 43b1 8054 194cb7b5bbf3](https://codegenius.org/uploads/slide/image/7596/7d7a048b-6b5c-43b1-8054-194cb7b5bbf3.jpeg)
![80eb5cc0 e8ef 47e3 bf2f 0480edea0fab](https://codegenius.org/uploads/slide/image/7597/80eb5cc0-e8ef-47e3-bf2f-0480edea0fab.jpeg)
効果音の追加
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Missile : MonoBehaviour
{
public GameObject effectPrefab;
// ★追加
public AudioClip hitSound;
private void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent(out EnemyBase enemy))
{
enemy.TakeDamage(1);
Destroy(gameObject);
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
// ★追加
AudioSource.PlayClipAtPoint(hitSound, transform.position);
}
}
}
![E0638bd1 5c68 49b8 9244 da2d4c09b3da](https://codegenius.org/uploads/slide/image/7598/e0638bd1-5c68-49b8-9244-da2d4c09b3da.jpeg)
![5dc2a79e 55b8 4255 99b1 e2b80c9f394b](https://codegenius.org/uploads/slide/image/7599/5dc2a79e-55b8-4255-99b1-e2b80c9f394b.jpeg)
【2021版】Danmaku(基礎/全55回)
他のコースを見る![76fc743a b338 4293 8304 744b469bcb7e](https://codegenius.org/uploads/slide/image/7588/76fc743a-b338-4293-8304-744b469bcb7e.jpeg)
コルーチンで動く敵を作る
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveEnemyA : EnemyBase // 復習(クラスの継承)
{
private float x;
private float z;
private float speed;
void Start()
{
HP = 1;
// ★コルーチンの処理を開始する
StartCoroutine(MoveE());
}
void Update()
{
transform.Translate(new Vector3(x, 0, z) * speed * Time.deltaTime, Space.World);
}
// ★コルーチン(処理を途中で中断させることができる仕組み)
private IEnumerator MoveE()
{
// 初めに、speed「5」の速度で、下方向に移動する
x = 0;
z = -1;
speed = 5;
// 「3秒」経過したら、上記の処理を中断して・・・・、
yield return new WaitForSeconds(3f);
// 今度は下記の処理を行う
// speed「10」の速度で、右方向に移動する
x = 1;
z = 0;
speed = 10;
}
}
![Fdfd0c04 d4c6 4e53 a474 f3b721d9b110](https://codegenius.org/uploads/slide/image/7589/fdfd0c04-d4c6-4e53-a474-f3b721d9b110.jpeg)
![83678dfe f79f 43ba 93de bffa29d686d5](https://codegenius.org/uploads/slide/image/7590/83678dfe-f79f-43ba-93de-bffa29d686d5.jpeg)
![1295f735 023e 4fc5 aa7a 373cd6ae5d7f](https://codegenius.org/uploads/slide/image/7591/1295f735-023e-4fc5-aa7a-373cd6ae5d7f.jpeg)
![6e38fa5f 0c03 4fb4 8f04 af793adfca4d](https://codegenius.org/uploads/slide/image/7592/6e38fa5f-0c03-4fb4-8f04-af793adfca4d.jpeg)
![E7d10ed2 e2d3 4d26 bf21 402d1b73f33c](https://codegenius.org/uploads/slide/image/7593/e7d10ed2-e2d3-4d26-bf21-402d1b73f33c.jpeg)
![1932d78a 3dbc 463d a355 01e526bd91ce](https://codegenius.org/uploads/slide/image/7594/1932d78a-3dbc-463d-a355-01e526bd91ce.jpeg)
![43d83103 efe7 477c 8b6a 0de0ba22c971](https://codegenius.org/uploads/slide/image/7595/43d83103-efe7-477c-8b6a-0de0ba22c971.jpeg)
![7d7a048b 6b5c 43b1 8054 194cb7b5bbf3](https://codegenius.org/uploads/slide/image/7596/7d7a048b-6b5c-43b1-8054-194cb7b5bbf3.jpeg)
![80eb5cc0 e8ef 47e3 bf2f 0480edea0fab](https://codegenius.org/uploads/slide/image/7597/80eb5cc0-e8ef-47e3-bf2f-0480edea0fab.jpeg)
効果音の追加
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Missile : MonoBehaviour
{
public GameObject effectPrefab;
// ★追加
public AudioClip hitSound;
private void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent(out EnemyBase enemy))
{
enemy.TakeDamage(1);
Destroy(gameObject);
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 1.0f);
// ★追加
AudioSource.PlayClipAtPoint(hitSound, transform.position);
}
}
}
![E0638bd1 5c68 49b8 9244 da2d4c09b3da](https://codegenius.org/uploads/slide/image/7598/e0638bd1-5c68-49b8-9244-da2d4c09b3da.jpeg)
![5dc2a79e 55b8 4255 99b1 e2b80c9f394b](https://codegenius.org/uploads/slide/image/7599/5dc2a79e-55b8-4255-99b1-e2b80c9f394b.jpeg)
動く敵の作成②(コルーチンで動きを作る)