2017-05-17 9 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:この行を追加した後 :

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

これが結果です: enter image description here

距離とfaryは両方ナンです。このような問題をデバッグする方法

+1

あなたの問題を解決する方法とは言い難いです。たぶん、タップリスナーからコードを提供します。 – ldurniat

+0

さて、スタック上のメッセージは 'to 'から呼び出された' _initTween'から呼び出される関数 '?'でアサーションが失敗することを示しています。あなたは少なくとも、 "to"と "_initTween"のドキュメントやソースをチェックする方がよいでしょう。 – Dimitry

答えて

1

print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX) 
:この問題を解決するための第一歩として、

は、私はあなたが呼び出しの前にtransition.to()への呼び出しに関与した変数の値を印刷示唆します

何かが正しく設定/初期化されていない可能性があります。また、nilオブジェクトのトランジションを呼び出そうとしているかどうか、またいつ呼び出すかを明らかにします。

UPDATE:

ので、さらなる調査がいくつかの点であなたがマニュアルから(NaNに合格しようとしていることを示しています「(非数が0など未定義または表現できない数値結果を、表現するために使用される特別な値であり、/0。) ")をtransition.toの引数として渡します。 distancefarYを計算するときには、前提を見てください。ゼロで除算するか、または負の数の平方根をどこかに取ることができますか?

+1

私は変数の異なる組み合わせをテストします。たとえば、遷移するオブジェクトとしてnilを使用しました。エラーは発生しません。最新の安定したバージョンのCorona Simulator(2017.3068)を使用します。 – ldurniat

+0

私は自分の質問をプリントラインで更新しました。結果をご覧ください。 –

+0

@JaysonTamayo「無効な数値引数」エラーが非常に役に立ちます。私の答えの更新を見てください。 – GoojajiGreg

0

あなたが非常に速く叩いているときに、ある時点であなたが間違って距離を計算している場所に当たると思われます。あなたの距離アルゴリズムの何かが失敗する数学を引き起こし、それはNaN(これは基本的にゼロまたは他の数学的問題のためのプレースホルダによる除算です)を吐き出します。

距離計算でNaNを確認し、0に置き換えます。計算を改善してください。あなたは、私が書いたライブラリを使用することができます - lengthOf機能を探します。

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

関連する問題