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;
}
}
}
があるのスクリーンショットです私が2回目にクリックしたときのスクリーンショット
「Ball.IncreaaseDecreaseAngleblablabla」のため、2度目に呼び出されませんか? – Sinatr
いいえボタンをクリックすると固定されたすべてのアップデートと呼ばれます – sagar
.NETのためか? CLRは、開始から最初の呼び出しでバイトコードをネイティブコードにコンパイルし、後でキャッシュされたバージョンを使用します。 私はphysics2d.raycastの最初の呼び出しで余分な作業をしていると思います。 私は、この関数の実行時間(Stopwatchクラスを使用)をあなたのログに記録することを推奨します。 –