์นด๋ฉ๋ผ๊ฐ ํ๋ค๋ฆฌ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ๊ฐ์์์ผ๋ก ์งฐ์
๊ทธ๋ฆฌ๊ณ ์ ์คํฌ๋ฆฝํธ์ ์ ๋ฐ์ดํธ์์ ํด๋น ํจ์๋ฅผ ๋๋ฆฌ๋๊น ์ ์์ ์ผ๋ก ํ๋ฉด์ด ํ๋ค๋ฆฌ๋๋ฐ
ํ๋ ์ด์ด ์คํฌ๋ฆฝํธ์ ์
๋ฐ์ดํธ์์ ํด๋น ํจ์๋ฅผ ์ฐธ์กฐํด์ ๋๋ฆฌ๋ฉด ์ด์ํ๊ฒ ์คํ์ด ์๋จ
์ ๋ ๊ฒ ๋ฃ์ด๋ ์๋ฌด๊ฒ๋ ์๋๋๋ฐ ํน์ ๋๊ฒ ํ๋ ค๋ฉด ๋ด๊ฐ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ ํด์ผํจ?
ํ์ฌ urpํ์ดํ๋ผ์ธ์ ๋ํดํธ๋ก ํด๋จ๋ ์ํ๊ณ
์ ํ๋ค๋ฆฌ๋ ์ฝ๋๊ฐ ์๋ ์ํ๋ ํ๋ฉด ๊ทธ๊ฑด ์๋ ์์ ๋งํ๋ฏ ์ ์คํฌ๋ฆฝํธ ๋ด์์ ํธ์ถํ๋ฉด ์ ์๋๋๋๋ฐ ์ด์ํ๊ฒ ์ธ๋ถ ์คํฌ๋ฆฝํธ์์ ๋ถ๋ฌ์ค๋ฉด ์๋จ
cameraScr = public cameraScript cameraScr๋ก ์ ์ธํ๊ณ ์ฐ๊ฒฐํด๋จ์
---
์ ์ฒด ์ฝ๋
์ ฐ์ดํฌ ์ฝ๋
public class CamEffects : MonoBehaviour
{
private static CamEffects camInst; // ์ธ๋ถ์์ ์ ์ธ๋ชปํ๋ ์ ์ ๋ณ์
public static CamEffects CamInst => camInst; // ์ธ๋ถ์์ ํธ์ถ ๊ฐ๋ฅํ ๊ฒ
float shakeTime;
float shakePow;
public CamEffects()
{
camInst = this;
}
public void camShake(float dur = 0.1f, float pow = 0.05f)
{
shakeTime = dur;
shakePow = pow;
StopCoroutine("ShakePos");
StartCoroutine("ShakePos");
}
public void camExplode(float dur = 0.1f, float pow = 0.05f)
{
shakeTime = dur;
shakePow = pow;
StopCoroutine("ExpPos");
StartCoroutine("ExpPos");
}
public IEnumerator ShakePos()
{
Vector3 startPos = transform.position;
while (shakeTime > 0.0f)
{
//ํน์ ๋ถ๋ถ๋ง ์์ง์ด๊ฒ ํ๋ ค๋ฉด
float x = Random.Range(-1f, 1f);
transform.position = startPos + new Vector3(x, 0, 0) * shakePow;
//๊ตฌ ๋ฒ์๋ก ์์ง์ด๊ฒ
//transform.position = startPos + Random.insideUnitSphere * shakePow;
shakeTime -= Time.deltaTime;
yield return null;
}
transform.position = startPos;
}
public IEnumerator ExpPos()
{
Vector3 startPos = transform.position;
while (shakeTime > 0.0f)
{
transform.position = startPos + Random.insideUnitSphere * shakePow;
shakeTime -= Time.deltaTime;
yield return null;
}
transform.position = startPos;
}
}
--
ํ๋ ์ด์ด
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour
{
public Hpbar hpbar; // ํผํต
public GameObject PunchAttackPoint; // ์ฃผ๋จน๊ณต๊ฒฉ ํฌ์ธํธ
public GameObject KickAttackPoint; // ๋ฐ๊ธธ์ง ํฌ์ธํธ
public float PunchAttackRange = 0.1f; // ํ์น ๋ฐ์
public float KickAttackRange = 0.2f; // ํฅ ๋ฐ๊ฒฝ
//public LayerMask EnemyLayer; // ์๋๋ฏธ 1 ๋ ์ด์ด
LayerMask enemylayer;
public GameObject DeadSceneobj; // ๋ฐ๋์ฌ
Rigidbody2D rigidbody2d;
Animator animator;
SpriteRenderer rend;
IEnumerator dashCoroutine; // ๋์ ์ฝ๋ฃจํด
float SpeedLimit = 4f; // ์๋ ์ ํ
float f_dashDir = 1; // ๋์ ๋ฐฉํฅ
float JumpForce = 5.1f; // ์ ํ์ ๊ฐํด์ง๋ ํ
float f_handcooltime = 0.4f; // ์ฃผ๋จน์ง ์ฟจํ์
float f_kickcooltime = 0.6f; // ๋ฐ๊ธธ์ง ์ฟจํ์
float f_currentTime; // ํ์ฌ์๊ฐ ์นด์ดํธ
float f_KnockBackBound = 7.0f; // ๋๋ฐฑ ๊ฑฐ๋ฆฌ
//int f_Hpmax = 10; // ์ต๋ ํผ
int f_curHp; // ํ์ฌ ํผ
int f_Hpmax = 20; // ์ต์ ํผ
bool b_Hurt; // ๋ค์น์ง ์ฌ๋ถ
bool b_Dash; // ๋์ ์ฌ๋ถ
bool b_OkayDash = true; // ๋์ ๊ฐ๋ฅ์ฌ๋ถ
bool b_AttackP; // ํ์น ๊ณต๊ฒฉ ์ฌ๋ถ
bool b_AttackK; // ๋ฐ์ฐจ๊ธฐ ๊ณต๊ฒฉ ์ฌ๋ถ
bool b_Jump; // ์ ํ ์ฌ๋ถ
//bool b_KnockBack = false; // ๋๋ฐฑ ์ฒดํฌ
void Awake()
{
animator = GetComponent<Animator>();
rigidbody2d = GetComponent<Rigidbody2D>();//๋ฆฌ์ง๋ ํธ์ถ
//์ธ์คํํฐ์ฐฝ ๋ฆฌ์ง๋ ๋ฐ๋์ ๋ฆฌ๋์ด ๋๋๊ทธ๋ ๊ณต๊ธฐ์ ํญ์ ์๋ฏธ : ์ด๋์ ์๋ ์ ํ
}
void Start()
{
enemylayer = LayerMask.GetMask("Enemy1") | LayerMask.GetMask("Enemy2");
rend = GetComponent<SpriteRenderer>();
f_curHp = f_Hpmax; // ํ์ฌ ํผ๋ ์ต์ ํผ๋ก ์ธํ
hpbar.HpMaxSet(f_Hpmax); // ํผํต๋ฐ์์ ํผ ์ธํ
}
private void FixedUpdate() //์ ๋์ผ๋ก ์ ์ฒ๋ฆฌํจ
{
MoveMent();
Dashing();
}
void Update()
{
f_dashDir = transform.localScale.x;
AttackCommand(enemylayer);
JumpPlayer();
}
void JumpPlayer() // ์ ํ
{
if (Input.GetKeyDown(KeyCode.Space) && rigidbody2d.velocity.y == 0 && b_Hurt == false) //์ ํ
{
b_Jump = true;
}
if (b_Jump == true)
{
animator.SetTrigger("Player_jumpT");
rigidbody2d.AddForce(Vector2.up * JumpForce, ForceMode2D.Impulse);
animator.SetBool("Player_walk", false);
animator.SetBool("Player_stay", false);
b_Jump = false;
}
}
void MoveMent() //์ด๋
{
if (Time.timeScale == 1)
{
if (Input.GetKey(KeyCode.RightArrow) && b_Hurt == false)
{
transform.localScale = new Vector3(1, 1, 1);
animator.SetBool("Player_walk", true);
animator.SetBool("Player_stay", false);
transform.Translate(Vector2.right * Time.deltaTime * SpeedLimit);
}
else if (Input.GetKey(KeyCode.LeftArrow) && b_Hurt == false)
{
transform.localScale = new Vector3(-1, 1, 1);
animator.SetBool("Player_walk", true);
animator.SetBool("Player_stay", false);
transform.Translate(Vector2.left * Time.deltaTime * SpeedLimit);
}
else
{
animator.SetBool("Player_stay", true);
animator.SetBool("Player_walk", false);
}
if (Input.GetKeyDown(KeyCode.C) && rigidbody2d.velocity.y == 0 && b_OkayDash == true)
{
if (dashCoroutine != null)
{
StartCoroutine(dashCoroutine);
}
dashCoroutine = Dash(.2f, 3);
StartCoroutine(dashCoroutine);
}
}
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(PunchAttackPoint.transform.position, PunchAttackRange);
}
void Dashing()
{
if(b_Dash)
{
rigidbody2d.AddForce(new Vector2(f_dashDir * 2, 0), ForceMode2D.Impulse);
}
}
void walkSound() // ๊ฑท๋ ์๋ฆฌ ์ฌ์
{
FindObjectOfType<AudioManager>().Play("PlayerWalk");
}
void jumpSound() // ์ ํ ํ๋ ์๋ฆฌ ์ฌ์
{
FindObjectOfType<AudioManager>().Play("PlayerJump");
}
void DashSound() // ๋์ ์๋ฆฌ ์ฌ์
{
FindObjectOfType<AudioManager>().Play("PlayerDash");
}
void PunchColliderSwitch()
{
PunchAttackPoint.SetActive(!PunchAttackPoint.activeInHierarchy);
}
void KickColliderSwitch()
{
KickAttackPoint.SetActive(!KickAttackPoint.activeInHierarchy);
}
void AttackCommand(LayerMask mask)
{
mask = enemylayer;
if (f_currentTime <= 0)
{
if (Input.GetKeyDown(KeyCode.Z) && rigidbody2d.velocity.y == 0)
{
b_AttackP = true;
FindObjectOfType<AudioManager>().OnePlay("PlayerPunch1", 0.2f);
}
if (b_AttackP)
{
animator.SetTrigger("Player_punchT");
animator.SetBool("Player_stay", false);
animator.SetBool("Player_walk", false);
Collider2D[] hitEnemyP = Physics2D.OverlapCircleAll(PunchAttackPoint.transform.position, PunchAttackRange, mask);
foreach(Collider2D enemy in hitEnemyP)
{
//์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ ์ฃผ๊ธฐ
var enemy1 = enemy.GetComponent<Enemy1RE>();
var enemy2 = enemy.GetComponent<Enemy2RE>();
if (enemy1)
{
enemy1.TakeDamageEnemy1(1, transform.position);
}
if(enemy2)
{
enemy2.TakeDamageEnemy2(1, transform.position);
}
}
f_currentTime = f_handcooltime;
b_AttackP = false;
}
if (Input.GetKeyDown(KeyCode.X) && rigidbody2d.velocity.y == 0)
{
b_AttackK = true;
FindObjectOfType<AudioManager>().OnePlay("PlayerKick1", 0.2f);
}
if(b_AttackK)
{
animator.SetTrigger("Player_kickT");
animator.SetBool("Player_stay", false);
animator.SetBool("Player_walk", false);
Collider2D[] hitEnemyK = Physics2D.OverlapCircleAll(KickAttackPoint.transform.position, KickAttackRange, mask);
foreach (Collider2D enemy in hitEnemyK)
{
var enemy1 = enemy.GetComponent<Enemy1RE>();
var enemy2 = enemy.GetComponent<Enemy2RE>();
if(enemy1)
{
enemy1.TakeDamageEnemy1(2, transform.position);
}
if(enemy2)
{
enemy2.TakeDamageEnemy2(2, transform.position);
}
}
f_currentTime = f_kickcooltime;
b_AttackK = false;
}
}
else f_currentTime -= Time.deltaTime;
}
public void TakeDamage(int damage, Vector2 pos)
{
if(!b_Hurt)
{
b_Hurt = true;
f_curHp -= damage;
hpbar.HpSet(f_curHp);
if(f_curHp <= 0)
{
StartCoroutine(DeadScene());
}
else
{
float x = transform.position.x - pos.x; // ๋ง์ ์ ์ ๋ฐฉํฅ
if (x < 0) x = 1;
else x = -1;
StartCoroutine("HurtCheck");
StartCoroutine("ChangeHurtColor");
StartCoroutine("KnockBack",(x));
}
}
}
IEnumerator DeadScene()
{
FindObjectOfType<AudioManager>().Play("PlayerDied");
animator.SetTrigger("Player_deathT");
yield return new WaitForSeconds(1.0f);
DeadSceneobj.SetActive(true);
}
IEnumerator HurtCheck()
{
yield return new WaitForSeconds(0.7f);
b_Hurt = false;
}
IEnumerator ChangeHurtColor()
{
while (b_Hurt)
{
yield return new WaitForSeconds(0.1f);
rend.color = new Color(1, 1, 1, 0.5f);
yield return new WaitForSeconds(0.1f);
rend.color = new Color(1, 1, 1, 1f);
}
}
IEnumerator KnockBack(float dir)
{
//b_KnockBack = true;
float f_KnockbackTime = 0;
while(f_KnockbackTime < 0.2f)
{
if (transform.rotation.y == 0)
{
transform.Translate(Vector2.left * f_KnockBackBound * Time.deltaTime * dir);
}
else transform.Translate(Vector2.left * f_KnockBackBound * Time.deltaTime * -dir);
f_KnockbackTime += Time.deltaTime;
yield return null;
}
//b_KnockBack = false;
}
IEnumerator Dash(float f_dashDuration, float f_dashCooldown)
{
animator.SetTrigger("Player_dashT");
b_Dash = true;
b_OkayDash = false; // ๋ค๋ฅธ ๋์ ๋ถ๊ฐ๋ฅํ๊ฒ. ์ค๋ณต๋ฐฉ์ง
yield return new WaitForSeconds(f_dashDuration);
b_Dash = false;
rigidbody2d.velocity = Vector2.zero;
yield return new WaitForSeconds(f_dashCooldown);
b_OkayDash = true;
}
private void OnCollisionEnter2D(Collision2D collision)
{
//if (collision.gameObject.CompareTag("Enemy1"))
//{
// TakeDamage(1, collision.transform.position);
//}
}
}
---
์์ 2
ํด๋น ์คํฌ๋ฆฝํธ๊ฐ ์์นํ ์ค๋ธ์ ํธ
์นด๋ฉ๋ผ
ํ๋ ์ด์ด
+
ํ์ด์ด๋ผํค์ฌ์ง
---
์นด๋ฉ๋ผ ์คํฌ๋ฆฝํธ ์ฝ๋(์นด๋ฉ๋ผ๊ฐ ํ๋ ์ด์ด ์ถ์ ํ๋ ์ฝ๋์)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraScript : MonoBehaviour
{
ย ย //์ดํ๋ ๊ธฐํ
ย ย public Transform Target;
ย ย float Offset = 1.9f;
ย ย float height;
ย ย float width;
ย ย void Start()
ย ย {
ย ย ย ย height = Camera.main.orthographicSize;
ย ย ย ย width = height * Screen.width / Screen.height;
ย ย }
ย ย void LateUpdate()
ย ย {
ย ย ย ย Vector3 temp = transform.position;
ย ย ย ย temp.x = Target.position.x;
ย ย ย ย temp.y = Target.position.y;
ย ย ย ย temp.y += Offset;
ย ย ย ย transform.position = temp;
ย ย }
}
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=71635&page=1
๊ฑ ShakePos๋ฅผ punlic์ผ๋ก ์ ์ธํด๋ด?
์ด๊ฑด ํด๋ดค๋๋ฐ ์ฌ์ ํ๋๋ผ
Update์์์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋งคํ๋ ์ ์คํ๋ผ์
์ฝ๋ฃจํด์ด ๋ฉ์ถ๊ณ ์คํ๋๊ณ ๋ฅผ ๋ฐ๋ณตํ๊ฒ๋๋๊น ๊ผฌ์ด๋ ๊ฒ ๊ฐ์๋ฐ ์ฝ๋ฃจํด์ ์ฌ์ฉํ ๊ฑฐ๋ฉด ํ๋ฒ๋ง ํธ์ถ๋๊ฒ ํด๋ณด์
๊ทธ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ธ๋ถ ์คํฌ๋ฆฝํธ์์ ์ ํจ์๋ฅผ ๋ถ๋ฌ์ค๋ฉด ์คํ์์ฒด๊ฐ ์๋จ ๊ทผ๋ฐ ์ ์คํฌ๋ฆฝํธ ์์์๋ ์ ๋ฐ์ดํธ์ ๋ฃ๋ ์ด๋ ๋ฃ๋ ๋ค ๋จ
์๋ชป ์ฐธ์กฐํ๊ณ ์๋๊ฑฐ ์๋?
๋ค์ ๋ณด๋๊น PlayerController ์คํฌ๋ฆฝํธ์์ ์คํํ๊ณ ์๋๊ฑด camShake๊ฐ ์๋๋ผ camExplode์ธ๋ฐ ๋ง์??
์บ ์ต์คํ๋ก๋๋ ์บ ์ ฐ์ดํฌ๋ ๊ฐ์ ๊ธฐ๋ฅ์ด์ผ ํจ์๋ช ๋ง ๋ฐ๊ฟจ์ด
ํ๋ ์ด์ด ์ปจํธ๋กค๋ฌ ์คํฌ๋ฆฝํธ ๋ฌ๋ ค์๋ ์ค๋ธ์ ํธ๋ CamEffects ๋ฌ๋ ค์๋ ์ค๋ธ์ ํธ ์บก์ณํด์ ์ฌ๋ ค๋ณด์ ์คํฌ๋ฆฝํธ๋ก๋ ๋ฌธ์ ์๋๊ฒ๊ฐ์
๊ทธ๋ฐ๋ฐ CameraScript๋ CameraEffects๋ ๋ญ๋ ๊ฑ ์ด๋ฆ๋ฐ๊พผ๊ฒจ?
๊ทธ --- ๋ฐ์ ์๋ ์ฝ๋๊ฐ ๋๋ฆ ์์ ํ๋ค๊ณ ์์ ์ ฐ์ดํฌ ๋ถ๋ถ๋ง ๋ฐ๋ก ๋๋ธ๊ฑฐ์ผ
์ฒจ์๋ CameraScript์์ ์ ฐ์ดํฌ ๊ธฐ๋ฅ์ด๋ ํ๋ ์ด์ด ์์น ์ถ์ ํ๋ ๊ธฐ๋ฅ ๋ ๋ค ๋ฃ์ด๋จ์๋๋ฐ ๊ฐ์ด ๋ถ์ฌ๋์ ๋ฒ๊ทธํฐ์ง๊ฑด๊ฐ ์ถ์ด์ ๋ฐ๋ก ๋ผ๋๊ณ ๊ทธ ๋ผ๋ธ๊ฒ CameraEffects ์ ํ์ฌ๋ CamEffects๋ก ๋ ์ด๋ฆ ๋ฐ๊ฟจ๊ณ
dur ์ด 0์ธ๋ฐ?
๋งค๊ฐ๋ณ์ 0.1๋ก ๊ฐ ์ค๋์ ๋ํดํธ๋ก ํ๋๊น 0.1 ๋์ค๋๋ฐ ์ ๊ฑฐ ์๊ธฐ ์คํฌ๋ฆฝํธ ์์์ ํธ์ถํ๋ฉด ์ ์์๋๋ผ
๋ง๋ด ใ ์ ์ฒด์ฝ๋ ์ฌ๋ ค๋ณด์ ์๊ธฐ์ ์ ๋ด๋๋ฆผ Camera๋ Player
์ ์๋ง ๊ธ ์์ ํด์ ์ฌ๋ฆด๊ฒ
์ค์ท์ฐ์ง ๋ง๊ณ ์คํฌ๋ฆฝํธ ๋ณต์ฌํด๋ ๋จ ํ ์คํธ ํธ์ง๊ธฐ๋ก ๋์ถฉ ๋ด๋ ๋์
ใ ใ ๋ณต์ฌํด์ ์ฌ๋ ธ์ด
์ ฐ์ดํฌ ์ฝ๋๋ CamEffects.CamInst.camShake(0.5f, 0.5f); // ์ฌ๊ธฐ ๋ฃ์ ์ด๋ ๊ณ ์ด๊ฑด ํ๋ ์ด์ด ์ฝ๋์ ์ด๋๋ ๋ฃ์ด๋ ๋ฐ์ ๋๊ฐ์์ ์ผ๋จ ๋นผ๊ณ ์ฌ๋ ธ์
์คํค ใฑใท
CamEffects ์์ ์ฑ๊ธํด ์ธ์คํด์ค ์ด๊ธฐํ๋ฅผ ์์ฑ์์์ ํ๊ณ ์๋๊ฑฐ ๋นผ๊ณ ๋ ๋ฌธ์ ๊ฐ ์๋๊ฑฐ๊ฐ์๋ฐ ์ด์ฐจํผ ํธ์ถ์ ์์์ ์ ์๊ฒ์ฒ๋ผ ํ ํ ๋๊น
์ผ๋จ ๋น์ฐํ๊ฑฐ์ง๋ง ๋๋ฒ๊ทธ๋ฅผ ๋๋ ค๋ณด๋๊ฒ ์ ์ผ ์ข๊ณ ์๋๋ฉด ๋ก๊น ์ด๋ผ๋ ํด์ ๋ฐ์์ด ์์๋ ์ค์ ์ฝ๋ฃจํด ํจ์์ ๋ค์ด์๋์ง, ์์น๊ฐ ๋ณํ๋์ง๋ฅผ ์ฐ์ด๋ด์ผ๋ ๊ฑฐ ๊ฐ์๋ฐ?
์..์ ๊ฒ๋ ํฌ๊ฒ ๋ฌธ์ ๋ ๊ฑด์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์.. ์๋ง ๋ด๋ ์ ์๋๋๊ฑด์ง ์ดํด๊ฐ ์ ์๊ฐ๊ฐ์ง๊ณ
์ ๋ ์ ๋ผ์ง? ์ง์ง ์ํ ์ฝ๋์์ ์กฐ์ง๊ณ ์๋ ๋๋์ธ๋ฐ
๊ฐ์ ์ฝ๋ ๋ฃ๊ณ ํ๋ ๋จ?? ์ ๋ ์๋๋๊ฑฐ์ง ์ ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ์ค์ํ ์ ๋ณด์ธ์ง ์์งํ ์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ๋๋๋ง ํ์ดํ๋ผ์ธ urp2d์
๋๋ ์ง๊ธ ๋ด๊ฐ ์ฝ๋ ์๋ชป์ง ์ค ์๊ณ ์ดํ์งธ ์ฝ๋ ๋ค ๊ฐ์์๊ณ ์๋ก ์ง๊ณ ํ๋์ค์ธ๋ฐ ๊ทธ๋๋ง ๋ค๋ฅธ๋ฐ์ ํ๋ ๋๋์ ๋คํ์ด์ผ..
CamEffects๋ง ์ ๋ํฐ์ ๋ฃ์ด์ ๋๋ ธ๊ณ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ํค์ ๋ ฅ์ผ๋ก ์ฑ๊ธํด ํตํด์ ํธ์ถํ์ Shake, Explode ๋ค ์คํ ์๋จ
์ ๊ธ๊น ํ์คํ ์ํ๋ฐ์์ ์ฝ๋ ์กฐ์ง๊ณ ์๋๊ฒ CamEffects ์์ฒด๋ ์ ์๋๋๋๋ฐ CameraScript๋ผ๋๊ฐ ๋ค๋ฅธ๊ณณ์์ ์์น ๋ค์ ์ก์ผ๋ฉด์ ํจ๊ณผ๋ฅผ ๋ชป๋ณด๊ณ ์๋ ๋๋์ CameraScript๊น์ง ์ฌ๋ฆฌ์
์์น ์ก์๋งํ๊ฒ ์นด๋ฉ๋ผ ์คํฌ๋ฆฝํธ ์ฝ๋ ๋ฟ์ธ๋ฐ ์ด๊ฒ๋ ํ๋ก ๋ค ์ฌ๋ ค๋ณผ๊ฒ ๊ธ ์์ ํ๊ณ ๋ ๋ฌํ ๋๊น ๋ด์ฃผ๋ผ
์ฌ๋ ธ์
ํ๋๋๊ฑฐ๋ ๋ฐ๋ผ๋ค๋๋๊ฑฐ๋ ๊ฐ์ด ์คํ๋์ ๋ฌธ์ ์ธ๊ฑฐ๋ค CamEffects๋ CameraScript๋ ํ๋๋ก ๋ฌถ์ด์ ๋ณํ๋ ํฌํจํด์ ์ด๋์ํค๊ฑฐ๋ ์บ ์์ ๋ถ๋ชจ๋ฅผ ๋ฌ์ CamEffects๋ CameraScript๋ ๋ถ๋ฆฌํ๋๊ฒ ํ์ํ ๋ฏ
ํ๋๋ก ํฉ์น๋ค์์ ๋ณํ๋์ ํฌํจํด์ ์ด๋ํ๋ผ๋๊ฑด ์์งํ ์ง์ง ๋ฏธ์ํ ๋ง์ด์ง๋ง ์ง๊ธ ๋ฉํ์ด ํฐ์ ธ์ ์ง ๊ฐ๋ ์์กํ๊ณ ๊ทธ ๋ถ๋ชจ ๋๋ผ๋๊ฑด ๋น ์ต์ ๋ง๋ค์ด์ ๊ทธ๊ฑธ ๋ฉ์ธ ์นด๋ฉ๋ผ์ ๋ถ๋ชจ๋ก ๋๋ผ๋ ๋ง์ด์ง?
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=71643&page=1
์ถ์ ์ฉ/ํ๋ค๊ธฐ์ฉ ๋๋๋ผ๋ ์๋ฏธ์
๋๋ฉด ๋งํ์ ์๊ฒ
์ ์๋ง ํด๋ณด๋์ค
https://gall.dcinside.com/mgallery/board/lists/?id=game_dev
์ฝ๋ฃจํด StopCoroutine ์ฐ๋ ค๋ฉด ์ธ ์ฝ๋ฃจํด ๋ณ์๋ก ์ ์ธํด์ค์ผ ๋์ง์๋?
์ด๋ฅด์ผ?
์ ๋ต๊ธ์ด ์๋ฌ๋ฆฌ๋;; private IEnumerator co;๋ก ํ๊ณ start์์ co = Do();๋ก ์ ์ธํด์ฃผ๊ณ stopcoroutine์์ co๋ฃ์ด์ฃผ๋ฉด ๋จ