๋์ถฉ ๊ฐ๋จํ๊ฒ ์งฌํธ๊ฒ์ ๋ง๋ค๊ณ ์๋๋ฐ
๋๊ฐ์ ๋ชฌ์คํฐ ์ค๋ธ์ ํธ 3๊ฐ๋ฅผ ๋งต์์ ๋ฐฐ์นํ๋๋(ํด๋น ๋ชฌ์คํฐ๋ ๋ฌด์ ์ํ์ผ๋ ๋ถ๋ชํ๋ฉด ๋ ๋ผ๊ฐ๋ ๊ธฐ๋ฅ์ด ์์)
๋งจ ์ฒ์ ๋ชฌ์คํฐ์ ์ ์ดํ์๋ ๋ค์ 2 ๋ง๋ฆฌ๋ ๋์์ ๊ฐ์ด ๋ ๋ผ๊ฐ๋๋ฐ ์ด๊ฑฐ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผํ ๊น...
๋ชฌ์คํฐ ์ค๋ธ์ ํธ๋ฅผ ํ๋ฆฌํนํ ์์ผ์ ๋ณต์ฌํด์ ์ฐ๊ธด ํ๋๋ฐ ์ด๊ฒ ๋ฌธ์ ์ผ๊น..?
public class Monster : MonoBehaviour
{
private SpriteRenderer spriteRenderer;
private float rotationSpeed = 1000f;
public int speed = 3;
public float leftPos;
public float rightPos;
public GameObject originalPosObj;
Transform originalPos;
public bool turn;
public bool isDestroyed = false;
private bool isInvisible = false;
// Start is called before the first frame update
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
originalPos = originalPosObj.transform;
}
private void OnEnable()
{
turn = false;
}
// Update is called once per frame
void Update()
{
originalPos = originalPosObj.transform;
leftPos = originalPos.transform.position.x - 3f;
rightPos = originalPos.transform.position.x + 3f;
if (!isDestroyed)
{
if (!turn)
{
this.transform.Translate(Vector2.left * speed * Time.deltaTime);
if (this.transform.position.x <= leftPos)
{
spriteRenderer.flipX = true;
turn = true;
}
}
else if (turn)
{
this.transform.Translate(Vector2.right * speed * Time.deltaTime);
if (this.transform.position.x >= rightPos)
{
spriteRenderer.flipX = false;
turn = false;
}
}
}
else if(isDestroyed)
{
float rotationAmount = rotationSpeed * Time.deltaTime;
this.transform.Rotate(Vector3.back, rotationAmount);
Vector3 direction = new Vector3(10, -10, 0);
.
direction.Normalize();
Vector3 movement = direction * speed * Time.deltaTime;
this.transform.parent.Translate(movement, Space.Self);
}
if (isInvisible)
this.transform.parent.gameObject.SetActive(false);
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Player")
{
if (StageManager.instance.isAlive)
{
if (!StageManager.instance.isInvincible && !StageManager.instance.isBoost && !StageManager.instance.isHitInvincivble)//&& !StageManager.instance.playerHit
{
StageManager.instance.playerHit = true;
StageManager.instance.mapScrollSpeed = 5.0f;
}
if (StageManager.instance.isBoost || StageManager.instance.isInvincible)
{
isDestroyed = true;
}
}
}
}
private void OnBecameInvisible()
{
if (isDestroyed)
isInvisible = true;
}
private void OnDisable()
{
isInvisible = false;
isDestroyed = false;
this.transform.rotation = Quaternion.Euler(Vector3.zero);
this.transform.parent.position = originalPos.position;
}
}
์ฝ๋๋ gif๋ฅผ ๊ฐ์ด ์ฌ๋ฆฌ์์ค. - dc App
์ฌ๋ ธ์ฐ...
๋ชฌ์คํฐ ๋ ๋ผ๊ฐ๋ ๋ถ๋ถ์ด ์๋ง transform.parent.Translate(movement, Space.Self); ์ด ๋ถ๋ถ์ธ๊ฒ ๊ฐ์๋ฐ ๋ชฌ์คํฐ๋ค์ด ํ๋์ ๋ถ๋ชจ๋ฅผ ๊ณตํต์ผ๋ก ๊ฐ์ง๊ณ ์์ด์ ์๊ธฐ๋ ๋ฌธ์ ์๋?
๊ณ ๋ง์ฐ์ด...
์ฝ๋ผ์ด๋ ๋ชฌ์คํฐ ์ค๋ธ์ ํธ ์์์๊ฒ ์ฃผ๊ณ ํ๊ฑฐ์๋๋ฉด transform.parent ๋ ํ์์์ง ์๋. ๋ชฌ์คํฐ ํ ๋ฌถ์์ผ๋ก ๋์ด ์์ด์ ๋๊ฐ๋ฆฌ ๋๋๊ฒ ๊ฐ์๋ฐ
๊ณ ๋ง์ฐ์ด...