공을 튀기는 그림을 물리 엔진을 사용하지 않고 그려보려고 했으나 아래 방식으로 하니 비용이 그거나 그거나다 -_-;
포탄같은 경우 일정 시간 후 명중 여부를 미리 알아보는데는 유용하겠으나 프레임마다 그려주는 방식으로는 적합하지 않았다...
참고 사이트 : http://blog.naver.com/PostView.nhn?blogId=gotripgo&logNo=140088163468
StartCoroutine(Bounce(accel, angle));
IEnumerator Bounce (float accel, float angle) {
float beginTime = Time.realtimeSinceStartup;
Vector3 beginPos = gameObject.transform.localPosition;
do {
float gapTime = Time.realtimeSinceStartup - beginTime;
Vector3 newPos = Vector3.zero;
newPos.x = beginPos.x + (accel * Mathf.Cos((angle * Mathf.PI) / 180) * gapTime);
newPos.y = beginPos.y + ((accel * Mathf.Sin((angle * Mathf.PI) / 180) * gapTime) - ((GRAVITY * Mathf.Pow(gapTime, 2) / 2)));
if (newPos.y < groundPosY) {
newPos.y = groundPosY;
accel = accel * 0.7f;
beginTime = Time.realtimeSinceStartup;
beginPos = gameObject.transform.localPosition;
if (newPos.x <= leftWallPosX) {
angle -= 90;
} else if (newPos.x >= rightWallPosX) {
angle += 90;
}
if (accel < 5) accel = 0;
}
if (newPos.x <= leftWallPosX) {
newPos.x = leftWallPosX + Mathf.Abs(leftWallPosX - newPos.x);
} else if (newPos.x >= rightWallPosX) {
newPos.x = rightWallPosX - Mathf.Abs(newPos.x - rightWallPosX);
}
gameObject.transform.localPosition = newPos;
yield return null;
} while (accel != 0);
'Unity' 카테고리의 다른 글
[Struct] Point (0) | 2015.11.07 |
---|---|
[Struct] Size (0) | 2015.11.07 |
[Shader] 텍스처 회전 (Texture Rotation) (0) | 2015.09.08 |
C# 리스트(List)를 이용해 만든 우선순위큐(PriorityQueue) (0) | 2015.07.23 |
리플렉션 응용 (C# Reflection) (0) | 2015.07.01 |
MonoBehaviour Lifecycle (0) | 2014.06.30 |
Android Local Notification Plugin (0) | 2013.04.23 |
케릭터 점프 코드 (0) | 2013.01.15 |
드레그한 방향 알아내기 (0) | 2013.01.15 |
Generic Based Singleton for MonoBehaviours (0) | 2013.01.14 |