using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrowController : MonoBehaviour {
GameObject player;
void Start () {
this.player = GameObject.Find ("player");
}
void Update () {
transform.Translate (0, -0.1f, 0);
if (transform.position.y < -5.0f) {
Destroy (gameObject);
}
Vector2 p1 = transform.position;
Vector2 p2 = this.player.transform.position;
Vector2 dir = p1 - p2;
float d = dir.magnitude;
float r1 = 0.5f;
float r2 = 1.0f;
if(d<r1 + r2) {
Destroy (gameObject);
}
}
}
왠만하면 넘어가려고 했는데, 그냥 긁어와서 한번만 더 물어볼께
1.
Vector2 에서 p1이랑 p2가 물체 중심의 좌표를 구하는거라고 설명해주는데,
이게 중심인지 맨위인지 맨왼쪽 밑(물체의 0.0좌표?)인지 어떻게 아는거야?
그냥 원래 그런것?
2.
마찬가지로 r1이랑 r2가 물체의 반경을 구하는거라고 설명해주는데 r1이 p1에 대입되고,
r2가 p2에 대입되는건 어떻게 코드없이 자동으로 들어가는거야?
난 이 코드가 굴러가는게 더 신기하네. 몇줄 더 필요해보이는데
3.
p1에서 p2를 빼는 이유가 난 플레이어가 x축으로만 이동해서 그런거라고 생각하고있는데,
만약에 플레이어가 비행기게임처럼 x,y축 자유롭게 이동하고, 총알도 사방에서 날라오는 게임이라도 이 스크립트가 잘 돌아가?
항상 친절하게 설명해줘서 고마워형들
1. GameObject player의 Pivot이 중앙으로 설정되어 있을거임 2. 이해 자체가 잘못됬는데 dir은 p2->p1 방향의 벡터고 magnitude는 벡터의 길이임 즉 p1,p2의 거리고 두 중심점 사이의 거리가 두 원의 반지름 합보다 작으면 충돌했다고 판정하는거임. 3. 알아서 생각하셈.