0
내 게임에서 스크립트를 통해 공의 투사 각도와 투영 각도를 늘리거나 줄이려고 시도하고 있습니다. 모든 것이 잘 작동하고 지연이 없지만 처음에는 버튼을 클릭하여 커다란 스파이크가 발생합니다. 내 프로파일 러는, 내가 두 번째로 클릭하면 그 후 여기 저기 더 큰 스파이크
없습니다 여기 내 코드처음으로 버튼을 클릭 할 때 내 프로파일 러에 스파이크가있는 이유는 무엇입니까?
void FixedUpdate() {
aimAngle.z = increaseAngle;
aim.transform.eulerAngles = aimAngle;
if (Input.GetButton ("Fire1")) {
IncreaseDecreaseAngleOfAimOrPower();
}
if (Mathf.Abs(rigidBody.velocity.x) <= 0.8f && Mathf.Abs(rigidBody.velocity.x) > 0 && rigidBody.velocity.y <=0.0f) {
rigidBody.angularDrag = 5.0f;
}
}
void IncreaseDecreaseAngleOfAimOrPower(){
collider_1 = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition),Vector3.forward,1.0f);
if (collider_1) {
if (collider_1.transform.CompareTag("IncreaseAngle")) {
increaseAngle += Time.deltaTime * 25;
} else if (collider_1.transform.CompareTag("DecreaseAngle")) {
increaseAngle -= Time.deltaTime * 25;
} else if (collider_1.transform.CompareTag ("PowerIncrease")) {
power += Time.deltaTime * 25;
} else if (collider_1.transform.CompareTag ("PowerDecrease")) {
power -= Time.deltaTime * 25;
} else if (collider_1.transform.CompareTag ("Shoot") && shoot) {
forceAngle.x = Mathf.Cos (aimAngle.z * Mathf.PI/180);
forceAngle.y = Mathf.Sin (aimAngle.z * Mathf.PI/180);
rigidBody.isKinematic = false;
rigidBody.AddForce ((forceAngle * power),ForceMode2D.Impulse);
aim.gameObject.SetActive (false);
shoot = false;
}
}
}
가있는 스크린 샷입니다 내가 두 번째로 클릭했을 때의 스크린 샷
두 번째로 호출되지 않는 'Ball.IncreaaseDecreaseAngleblablabla' 때문에 – Sinatr
아니요 버튼을 클릭 할 때마다 고정 된 업데이트로 불리지 않습니다. – sagar
.NET 때문일 수 있습니까? CLR은 시작 이후 처음 호출하는 동안 바이트 코드를 원시 코드로 컴파일 한 다음 캐시 된 버전을 사용합니다. 나는 physics2d.raycast의 첫 번째 호출에서 추가 작업을한다고 가정합니다. 이 함수의 실행 시간 (Stopwatch 클래스 사용)을 로그에 기록하도록 권합니다. –