์–ด์ œ ์œ ๋‹ˆํ‹ฐ๋กœ ํƒ„๋ง‰ ๋งŒ๋“ค๋ฉด์„œ ์œ ๋„ํƒ„ ๋งŒ๋“ ๋‹ค๋˜ ๋†ˆ์ธ๋ฐ์š”...

์•„์ง ํ•ด๊ฒฐ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค..

๋‹ค ๋”ฐ๋ผํ•ด๋ณด์•˜๊ณ , ์ œ๊บผ์— ๋งž๊ฒŒ ์ˆ˜์ •๋„ ํ•ด๋ณด์•˜๋Š”๋ฐ


์–ด๋””์„œ ๋ฌธ์ œ์ธ์ง€๋„ ์˜ค๋ฅ˜๊ฐ€ ์•ˆ๋œจ๊ณ  ๊ทธ์ € ์•ˆ๋˜์„œ ๊ฐˆํ”ผ๋ฅผ ๋ชป์žก๊ฒ ๋„ค์š”.


[ํ˜„์žฌ ์ฝ”๋“œ]

ย public float bulletspeed = 5f;

ย  ย  public float rotateSpeed = 5f;



ย  ย  public Transform target;

ย  ย  private Rigidbody2D rb;


ย  ย  // Use this for initialization

ย  ย  void Start () {

ย  ย  ย  ย  rb = GetComponent<Rigidbody2D>();

ย  ย  ย  ย  target = GameObject.FindGameObjectWithTag("Player").transform;

}

// Update is called once per frame

void Update ()

ย  ย  {

ย  ย  ย  ย  Vector2 direction = (Vector2)target.position - rb.position;

ย  ย  ย  ย  direction.Normalize();


ย  ย  ย  ย  float rotateAmount = Vector3.Cross(direction, transform.up).z;


ย  ย  ย  ย  rb.angularVelocity = rotateAmount * rotateSpeed;


ย  ย  ย  ย  rb.velocity = transform.up * bulletspeed;

ย  ย  }





๋ฐ‘์— ์ € ์ฝ”๋“œ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ž˜ ์˜๋˜ ์ด์•Œ์ด ๊ฐ‘์ž๊ธฐ ์•ˆ๋ณด์ž…๋‹ˆ๋‹ค.. ํด๋ก  ์ƒ์„ฑ์€ ๋˜๋Š”๋ฐ..

-> ๊ฒŒ์ž„์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ด๋™ํ•˜๊ณ  ์ด์•Œ์„ ๋ฐœ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งต์— ๋žœ๋ค์œผ๋กœ ๋ชฌ์Šคํ„ฐ๋ฅผ ๋ฟŒ๋ฆฌ๋Š”๋ฐ ๊ทธ ๋ชฌ์Šคํ„ฐ๊ฐ€ ๋ชจ๋‘ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ํ–ฅํ•ด ๋‹ฌ๋ ค์˜ต๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด ์ด์•Œ๋กœ ์žก์œผ๋ฉด ์ฃฝ๊ฒŒ ๋˜๊ณ  ์ ์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ทธ๋Ÿฐ ์„ค์ •์ž…๋‹ˆ๋‹ค๋งŒ.. ์ž˜๋‚˜์˜ค๋˜ ์ด์•Œ๋„ ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ๋ฉด์„œ๋ถ€ํ„ฐ ์•ˆ๋ณด์ด๋„ค์š” ๊ฐ‘์ž๊ธฐ.. (์Šคํฌ๋„ˆ๋กœ ์Šคํฐ์‹œ์ผœ์„œ ํด๋ก ์€ ์ž˜ ๋งŒ๋“ค์–ด์ง)