В моем проекте, написанном на Unity 5, я выполняю операцию касания объекта с помощью raycast. Но, поскольку мой объект движется, иногда raycast не может достичь меня, когда я касаюсь. В качестве решения, используя фиксированное обновление, я установил фиксированный временной шаг от 0,02 до 0,01 в настройках проекта. Однако в это время он ведет себя так, как будто я касаюсь дважды, и он получает два касания. Я не должен использовать функцию обновления, и мне нужно сделать это с помощью фиксированного обновления. Как я могу решить проблему?
Ниже мой код:
void FixedUpdate()
{
if (PlayerPrefs.GetInt ("oyunsonu") == 0) {
// Code for OnMouseDown in the iPhone. Unquote to test.
RaycastHit hit = new RaycastHit ();
for (int i = 0; i < Input.touchCount; ++i) {
if (Input.GetTouch (i).phase.Equals (TouchPhase.Began)) {
Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (i).position);
touchY = Input.GetTouch (i).position.y;
if (Physics.Raycast (ray, out hit)) {
//Debug.Log (hit.transform.gameObject.name.ToString ());
GameObject myBallObject;
myBallObject = GameObject.FindWithTag ("Ball");
Instantiate (effect, myBallObject.transform.position, transform.rotation);
GetComponent<AudioSource> ().PlayOneShot (saundFile [3], 1);
//TextAnimation.Show ();
TouchObjectScript myTouchObjectScript = myBallObject.GetComponent<TouchObjectScript> ();
myTouchObjectScript.BallForce (hit.transform.gameObject.tag.ToString (), touchY, screenHeight);
//PlayerPrefs.SetInt ("aaa", 0);
}
}
}
}
}
0.016
, может вызвать проблемы с физикой. Вместо этого используйте этот код в методе Update, ничто не мешает вам не использовать FixedUpdate. - person EvilTak   schedule 03.06.2016