特殊弾の作り方(ストップ&ゴー弾)
![E0a54acf 6ab3 4494 8ceb bb1eb822cdca](https://codegenius.org/uploads/slide/image/3385/e0a54acf-6ab3-4494-8ceb-bb1eb822cdca.jpeg)
![8caed2c0 5f9a 41c4 a803 86fcb79311f9](https://codegenius.org/uploads/slide/image/3386/8caed2c0-5f9a-41c4-a803-86fcb79311f9.jpeg)
![1f94d621 c277 4ecb 870c d0d31bf29577](https://codegenius.org/uploads/slide/image/3387/1f94d621-c277-4ecb-870c-d0d31bf29577.jpeg)
![0afcbe96 2434 4779 8c94 9ea6d101c732](https://codegenius.org/uploads/slide/image/3388/0afcbe96-2434-4779-8c94-9ea6d101c732.jpeg)
特殊弾の作り方
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stop_Go : MonoBehaviour
{
public float startSpeed_Min = 60;
public float startSpeed_Max = 300;
public float nextSpeed;
private Rigidbody rb;
private GameObject target;
private float timeCount = 0;
public float stopTime = 3; // 弾が生成後、何秒後に停止するか?
private float stopTimeCount = 0;
private float nextStartTime = 2; // 弾が停止後、何秒後に動き出すか?
private bool stopKey = false;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.AddForce(-transform.forward * Random.Range(startSpeed_Min, startSpeed_Max));
target = GameObject.Find("Player");
}
void Update()
{
timeCount += Time.deltaTime;
if (timeCount >= stopTime && stopKey == false)
{
stopTimeCount += Time.deltaTime;
rb.velocity = Vector3.zero; // 弾の速度を0にする=弾を停止させる。
// 弾の色を変える
GetComponent<MeshRenderer>().material.color = Color.white;
if (stopTimeCount >= nextStartTime)
{
this.gameObject.transform.LookAt(target.transform.position); // プレーヤーの方向に向きを変える。
rb.AddForce(transform.forward * nextSpeed);
stopKey = true;
}
}
}
}
![E14d14f8 a9dc 4db3 a227 7f36ffc960ea](https://codegenius.org/uploads/slide/image/3389/e14d14f8-a9dc-4db3-a227-7f36ffc960ea.jpeg)
![Acea58cf a7ec 4809 830b 6146724e6c0f](https://codegenius.org/uploads/slide/image/3390/acea58cf-a7ec-4809-830b-6146724e6c0f.jpeg)
![E386acef 5715 46cf b453 5cbe93523029](https://codegenius.org/uploads/slide/image/3391/e386acef-5715-46cf-b453-5cbe93523029.jpeg)
![E0a54acf 6ab3 4494 8ceb bb1eb822cdca](https://codegenius.org/uploads/slide/image/3385/e0a54acf-6ab3-4494-8ceb-bb1eb822cdca.jpeg)
![8caed2c0 5f9a 41c4 a803 86fcb79311f9](https://codegenius.org/uploads/slide/image/3386/8caed2c0-5f9a-41c4-a803-86fcb79311f9.jpeg)
![1f94d621 c277 4ecb 870c d0d31bf29577](https://codegenius.org/uploads/slide/image/3387/1f94d621-c277-4ecb-870c-d0d31bf29577.jpeg)
![0afcbe96 2434 4779 8c94 9ea6d101c732](https://codegenius.org/uploads/slide/image/3388/0afcbe96-2434-4779-8c94-9ea6d101c732.jpeg)
特殊弾の作り方
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stop_Go : MonoBehaviour
{
public float startSpeed_Min = 60;
public float startSpeed_Max = 300;
public float nextSpeed;
private Rigidbody rb;
private GameObject target;
private float timeCount = 0;
public float stopTime = 3; // 弾が生成後、何秒後に停止するか?
private float stopTimeCount = 0;
private float nextStartTime = 2; // 弾が停止後、何秒後に動き出すか?
private bool stopKey = false;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.AddForce(-transform.forward * Random.Range(startSpeed_Min, startSpeed_Max));
target = GameObject.Find("Player");
}
void Update()
{
timeCount += Time.deltaTime;
if (timeCount >= stopTime && stopKey == false)
{
stopTimeCount += Time.deltaTime;
rb.velocity = Vector3.zero; // 弾の速度を0にする=弾を停止させる。
// 弾の色を変える
GetComponent<MeshRenderer>().material.color = Color.white;
if (stopTimeCount >= nextStartTime)
{
this.gameObject.transform.LookAt(target.transform.position); // プレーヤーの方向に向きを変える。
rb.AddForce(transform.forward * nextSpeed);
stopKey = true;
}
}
}
}
![E14d14f8 a9dc 4db3 a227 7f36ffc960ea](https://codegenius.org/uploads/slide/image/3389/e14d14f8-a9dc-4db3-a227-7f36ffc960ea.jpeg)
![Acea58cf a7ec 4809 830b 6146724e6c0f](https://codegenius.org/uploads/slide/image/3390/acea58cf-a7ec-4809-830b-6146724e6c0f.jpeg)
![E386acef 5715 46cf b453 5cbe93523029](https://codegenius.org/uploads/slide/image/3391/e386acef-5715-46cf-b453-5cbe93523029.jpeg)
特殊弾の作り方(ストップ&ゴー弾)