停止している時だけ、剣攻撃が有効

停止時だけ剣攻撃が有効
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Buring : MonoBehaviour
{
private int num = 1;
public GameObject rayPoint;
public GameObject point_front;
public GameObject point_back;
private SpriteRenderer spriteRenderer;
public GameObject fireBallPrefab;
private int speed = 10;
// ★追加(停止時・攻撃有効)
private int HP = 3;
public AudioClip sound;
public GameObject effectPrefab;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
rayPoint.transform.position = point_back.transform.position;
StartCoroutine(Shot());
}
void Update()
{
transform.Translate(Vector2.left * Time.deltaTime * speed * num); // ★追加(Shot)変数のspeedにコードを変更
RaycastHit2D hit2d = Physics2D.Raycast(rayPoint.transform.position, Vector2.left * num, 0.2f);
Debug.DrawRay(rayPoint.transform.position, Vector3.left * num, Color.white, 0.2f);
if (hit2d.collider != null)
{
if (hit2d.collider.CompareTag("Floor"))
{
num *= -1;
}
}
if (num == 1)
{
spriteRenderer.flipX = false;
rayPoint.transform.position = point_back.transform.position;
}
else if (num == -1)
{
spriteRenderer.flipX = true;
rayPoint.transform.position = point_front.transform.position;
}
}
private IEnumerator Shot()
{
while (true)
{
yield return new WaitForSeconds(6);
speed = 0;
yield return new WaitForSeconds(1);
for (int i = 0; i < 5; i++)
{
GameObject fireBall = Instantiate(fireBallPrefab, transform.position, Quaternion.identity);
Rigidbody2D fireBallRb2d = fireBall.GetComponent<Rigidbody2D>();
Destroy(fireBall, 8.0f);
int x = Random.Range(-1, 2);
fireBallRb2d.AddForce(new Vector2(x, 1) * 500);
yield return new WaitForSeconds(0.5f);
}
yield return new WaitForSeconds(1.5f);
speed = 10;
}
}
// ★追加(停止時・攻撃有効)
public void Damage()
{
if (speed != 0)
{
return;
}
HP -= 1;
AudioSource.PlayClipAtPoint(sound, transform.position);
if (HP < 1)
{
Destroy(this.gameObject);
Instantiate(effectPrefab, transform.position, Quaternion.identity);
}
}
}

停止時だけ剣攻撃が有効
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SwordAttack : MonoBehaviour
{
public AudioClip sound;
public GameObject attackPoint;
public GameObject attack_front;
public GameObject attack_back;
private RaycastHit2D hit2d;
private PlayerMovement pm;
private float num;
public GameObject effectPrefab;
void Start()
{
pm = GetComponent<PlayerMovement>();
attackPoint.transform.position = attack_front.transform.position;
}
void Update()
{
num = pm.moveH;
if (num == 1)
{
attackPoint.transform.position = attack_front.transform.position;
}
else if (num == -1)
{
attackPoint.transform.position = attack_back.transform.position;
}
hit2d = Physics2D.Raycast(attackPoint.transform.position, Vector2.right * num, 0.3f);
Debug.DrawRay(attackPoint.transform.position, Vector2.right * num, Color.white, 0.3f);
}
public void Attack()
{
if (hit2d.collider != null)
{
if (hit2d.collider.CompareTag("Enemy") || hit2d.collider.CompareTag("Wizard")) // ★追加(剣攻撃有効)
{
Destroy(hit2d.collider.gameObject);
AudioSource.PlayClipAtPoint(sound, transform.position);
Instantiate(effectPrefab, hit2d.collider.transform.position, Quaternion.identity);
pm.AddSonicCount(1);
}
// ★追加(停止時・剣攻撃有効)
else if(hit2d.collider.CompareTag("Burning"))
{
hit2d.collider.GetComponent<Buring>().Damage();
}
}
}
}


【2022版】DarkCastle(全39回)
他のコースを見る
停止時だけ剣攻撃が有効
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Buring : MonoBehaviour
{
private int num = 1;
public GameObject rayPoint;
public GameObject point_front;
public GameObject point_back;
private SpriteRenderer spriteRenderer;
public GameObject fireBallPrefab;
private int speed = 10;
// ★追加(停止時・攻撃有効)
private int HP = 3;
public AudioClip sound;
public GameObject effectPrefab;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
rayPoint.transform.position = point_back.transform.position;
StartCoroutine(Shot());
}
void Update()
{
transform.Translate(Vector2.left * Time.deltaTime * speed * num); // ★追加(Shot)変数のspeedにコードを変更
RaycastHit2D hit2d = Physics2D.Raycast(rayPoint.transform.position, Vector2.left * num, 0.2f);
Debug.DrawRay(rayPoint.transform.position, Vector3.left * num, Color.white, 0.2f);
if (hit2d.collider != null)
{
if (hit2d.collider.CompareTag("Floor"))
{
num *= -1;
}
}
if (num == 1)
{
spriteRenderer.flipX = false;
rayPoint.transform.position = point_back.transform.position;
}
else if (num == -1)
{
spriteRenderer.flipX = true;
rayPoint.transform.position = point_front.transform.position;
}
}
private IEnumerator Shot()
{
while (true)
{
yield return new WaitForSeconds(6);
speed = 0;
yield return new WaitForSeconds(1);
for (int i = 0; i < 5; i++)
{
GameObject fireBall = Instantiate(fireBallPrefab, transform.position, Quaternion.identity);
Rigidbody2D fireBallRb2d = fireBall.GetComponent<Rigidbody2D>();
Destroy(fireBall, 8.0f);
int x = Random.Range(-1, 2);
fireBallRb2d.AddForce(new Vector2(x, 1) * 500);
yield return new WaitForSeconds(0.5f);
}
yield return new WaitForSeconds(1.5f);
speed = 10;
}
}
// ★追加(停止時・攻撃有効)
public void Damage()
{
if (speed != 0)
{
return;
}
HP -= 1;
AudioSource.PlayClipAtPoint(sound, transform.position);
if (HP < 1)
{
Destroy(this.gameObject);
Instantiate(effectPrefab, transform.position, Quaternion.identity);
}
}
}

停止時だけ剣攻撃が有効
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SwordAttack : MonoBehaviour
{
public AudioClip sound;
public GameObject attackPoint;
public GameObject attack_front;
public GameObject attack_back;
private RaycastHit2D hit2d;
private PlayerMovement pm;
private float num;
public GameObject effectPrefab;
void Start()
{
pm = GetComponent<PlayerMovement>();
attackPoint.transform.position = attack_front.transform.position;
}
void Update()
{
num = pm.moveH;
if (num == 1)
{
attackPoint.transform.position = attack_front.transform.position;
}
else if (num == -1)
{
attackPoint.transform.position = attack_back.transform.position;
}
hit2d = Physics2D.Raycast(attackPoint.transform.position, Vector2.right * num, 0.3f);
Debug.DrawRay(attackPoint.transform.position, Vector2.right * num, Color.white, 0.3f);
}
public void Attack()
{
if (hit2d.collider != null)
{
if (hit2d.collider.CompareTag("Enemy") || hit2d.collider.CompareTag("Wizard")) // ★追加(剣攻撃有効)
{
Destroy(hit2d.collider.gameObject);
AudioSource.PlayClipAtPoint(sound, transform.position);
Instantiate(effectPrefab, hit2d.collider.transform.position, Quaternion.identity);
pm.AddSonicCount(1);
}
// ★追加(停止時・剣攻撃有効)
else if(hit2d.collider.CompareTag("Burning"))
{
hit2d.collider.GetComponent<Buring>().Damage();
}
}
}
}


停止している時だけ、剣攻撃が有効