2017-05-17 3 views
0

글 머리 기호를 탭 방향으로 보내는 게임을 개발 중입니다. 하지만 플레이어의 중앙에 너무 많은/여러 번 누를 때, 나는 다음과 같은 오류 얻을 :화면을 너무 두드리는 데 어설 션이 실패했습니다.

Runtime error 
    assertion failed! 
    stack traceback: 
     [C]: in function 'assert' 
     ?: in function '?' 
     ?: in function '_initTween' 
     ?: in function 'to' 
     /Users/User/Desktop/MD/screen1.lua:61: in function </Users/User/Desktop/MD/screen1.lua:31> 
     ?: in function <?:221> 

을하지만 천천히 누를 때, 그것은 오류를 던지고되지 않습니다. 다음은 screen1.lua의 61 행입니다.

bullet.trans = transition.to(bullet, { time=distance/bulletSpeed, y=farY, x=farX, onComplete=nil}) 

감사합니다.

EDIT : enter image description here

거리와 fary 모두 앤 같습니다

print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX) 

이 결과 : 줄을 추가 한 후. 이 같은 문제를 디버깅하는 방법

+1

당신의 문제를 해결하는 방법을 말하기 어렵다. 어쩌면 탭 리스너의 코드를 제공 할 수 있습니다. – ldurniat

+0

글쎄, 스택의 메시지는 'to'에서 호출 된'_initTween'에서 호출 된'?'함수에서 어설 션이 실패했다고 말합니다. 최소한 "to"와 "_initTween"에 대한 문서 나 소스를 확인하는 것이 좋습니다. – Dimitry

답변

1

:

print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX) 
이 문제를 해결하기위한 첫 단계로

, 난 당신이 호출하기 전에 transition.to()에 호출에 포함 된 변수의 값을 출력 제안

뭔가 제대로 설정/초기화되지 않았을 수 있습니다. 또한 nil 개체에서 전환을 호출할지 여부와시기를 나타냅니다.

는 UPDATE : 같은 0으로, "(숫자가 정의되지 않았거나 표현할 수없는 수치 결과를 나타 내기 위해 사용되는 특수한 값입니다

그래서 추가 조사는 어떤 시점에서 당신이 수동에서 (NaN을 통과하려고하는 것을 보여줍니다/0.) ")를 transition.to에 대한 인수로 가져오고이 값을 처리합니다. distancefarY을 계산할 때 가정을 살펴 봐야합니다. 0으로 나누거나 음수의 제곱근을 어딘가에 가져갈 수 있습니까?

+1

다른 변수 조합을 테스트합니다. 예를 들어 전이 할 객체로 nil을 사용했습니다. 오류는 발생하지 않습니다. 최신 안정 버전의 코로나 시뮬레이터 (2017.3068)를 사용합니다. – ldurniat

+0

내 질문을 인쇄 라인으로 업데이트했습니다. 결과를 확인하십시오. –

+0

@JaysonTamayo "잘못된 숫자 인수"오류가 매우 유용합니다. 내 답변에 대한 업데이트를 참조하십시오. – GoojajiGreg

0

매우 빠른 속도로 도청 할 때 어떤 지점에서 실수로 거리를 계산하는 위치에 도달했다고 의심됩니다. 귀하의 거리 알고리즘에 뭔가가 실패하고 그것은 NaN (이것은 기본적으로 다른 수학 문제에 대한 0 또는 자리 표시 자에 의한 나누기)입니다.

거리 계산에서 NaN을 확인하고 0으로 바꾸십시오. 더 나은 방법으로 계산을 향상 시키십시오. 당신은 내가 쓴 라이브러리를 사용할 수 있습니다 - lengthOf 기능을 찾습니다

https://gist.github.com/HoraceBury/9431861

관련 문제