地上を高速で走行する敵の作成







地上を高速走行する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Buring : MonoBehaviour
{
private int num = 1; // 「Rayの向き」と「走る向き」をコントロール
public GameObject rayPoint;
public GameObject point_front;
public GameObject point_back;
private SpriteRenderer spriteRenderer;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
rayPoint.transform.position = point_back.transform.position;
}
void Update()
{
// 走る
transform.Translate(Vector2.left * Time.deltaTime * 10 * num); // numで走る向きを切り替える
// Rayで前方の壁を探知して方向転換する
RaycastHit2D hit2d = Physics2D.Raycast(rayPoint.transform.position, Vector2.left * num, 0.2f);// numでRayの向きを切り替える
Debug.DrawRay(rayPoint.transform.position, Vector3.left * num, Color.white, 0.2f);
if (hit2d.collider != null)
{
if (hit2d.collider.CompareTag("Floor"))
{
num *= -1; // numを「-1」と「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;
}
}
}




【2022版】DarkCastle(全39回)
他のコースを見る






地上を高速走行する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Buring : MonoBehaviour
{
private int num = 1; // 「Rayの向き」と「走る向き」をコントロール
public GameObject rayPoint;
public GameObject point_front;
public GameObject point_back;
private SpriteRenderer spriteRenderer;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
rayPoint.transform.position = point_back.transform.position;
}
void Update()
{
// 走る
transform.Translate(Vector2.left * Time.deltaTime * 10 * num); // numで走る向きを切り替える
// Rayで前方の壁を探知して方向転換する
RaycastHit2D hit2d = Physics2D.Raycast(rayPoint.transform.position, Vector2.left * num, 0.2f);// numでRayの向きを切り替える
Debug.DrawRay(rayPoint.transform.position, Vector3.left * num, Color.white, 0.2f);
if (hit2d.collider != null)
{
if (hit2d.collider.CompareTag("Floor"))
{
num *= -1; // numを「-1」と「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;
}
}
}




地上を高速で走行する敵の作成