私はC#で1次元でトップダウンの2Dゲームを作っています。現在のところ、動きの設定が始まっていますが、私はすでに私が把握できない問題にぶつかっています。ゲームはグリッドで設定されており、矢印キーを使って上下左右に移動しています。これは私のスクリプトです:Unity 2D C#奇妙な動きの振る舞い
public class Player : MonoBehaviour
{
public float playerSpeed;
void FixedUpdate()
{
// Movement
if (transform.position.x < 0.25)
{
if (Input.GetKeyUp(KeyCode.RightArrow))
{
transform.position += new Vector3(playerSpeed, 0, 0);
}
}
if (transform.position.x > -0.3)
{
if (Input.GetKeyUp(KeyCode.LeftArrow))
{
transform.position += new Vector3(-playerSpeed, 0, 0);
}
}
if (transform.position.y < 0.15)
{
if (Input.GetKeyUp(KeyCode.UpArrow))
{
transform.position += new Vector3(0, playerSpeed, 0);
}
}
if (transform.position.y > -0.10)
{
if (Input.GetKeyUp(KeyCode.DownArrow))
{
transform.position += new Vector3(0, -playerSpeed, 0);
}
}
}
}
各方向の最初のif文は、プレーヤーが部屋の境界を離れないようにしています。起こっている厄介なことは、移動するときには、0.05
、0.1
、0.15
などのような素敵な正方形の数字で始まりますが、何とか途中で消えて、-0.05000001
、-7.450581e-09
、0.04999999
のような数字が与えられます数字は十分に正確ではありません。何か案は?すべての提案が高く評価されました。
フロートの精度によるものではありませんか?つまり、0.0fは0.000000001fと同じですか? – Ceros
は倍増するでしょうか? – oscaro
おそらく、整数を使ってグリッドを作る方がよいでしょう。また、この 'Update'のためにします。 –