2016-03-29 24 views
1

ブロックを移動できる簡単な2D設定を行いました。 しかし、私は完全に別のスプライト(壁)にスナップすることはできません。オブジェクト間のスペースを削除

スクリーンショット: enter image description here

インスペクター設定の壁:

enter image description here

インスペクタの設定プレーヤー:

enter image description here

PlayerMovementスクリプト:

using UnityEngine; 
using System.Collections; 

public class PlayerMovement : MonoBehaviour { 

    public KeyCode moveUp; 
    public KeyCode moveDown; 
    public KeyCode moveLeft; 
    public KeyCode moveRight; 

    public float speed = 10f; 

    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void FixedUpdate() { 

     Vector2 v = rigidbody2D.velocity; 

     if (Input.GetKey (moveUp)) { 
      v.y = speed; 
      v.x = 0; 
      rigidbody2D.velocity = v; 
     } else if (Input.GetKey (moveDown)) { 
      v.y = speed * -1; 
      v.x = 0; 
      rigidbody2D.velocity = v; 
     } else if (Input.GetKey (moveRight)) { 
      v.x = speed; 
      v.y = 0; 
      rigidbody2D.velocity = v; 
     } else if (Input.GetKey (moveLeft)) { 
      v.x = speed * -1; 
      v.y = 0; 
      rigidbody2D.velocity = v; 
     } 
     else 
     { 
      v.x = 0; 
      v.y = 0; 
      rigidbody2D.velocity = v; 
     } 
    } 
} 

私はこれが私の最初の統一のゲームですので、このスペースを作成することができますどのような見当がつかない。

答えて

0

あなたのスプライトがこの空の境界線を持っていることがほぼ確実です。この問題を解決するには、 'player'スプライトが完全に白いピクセルまたは/およびあなたの 'wall'スプライトで満たされていることを確認します。基本的に画像をダブルチェックしてください。

また、これを修正するには、イメージの境界に合わせてコライダーをわずかに小さくするだけです。

最後に、あなたがボディとみなすピクセルにコライダーが対応していることを確認してください。

+0

私は二重チェックして空きスペースが見つかりませんでした。これらは私のファイルです:https://onedrive.live.com/redir?resid=451ADC2A2ED2D0E7!108&authkey=!AAimm1ss1vE_ZfA&v=3&ithint=photo%2cpng、https://onedrive.live.com/redir?resid=451ADC2A2ED2D0E7!109&authkey= !AAxqJwKjBiS2n8A&v = 3&ithint = photo%2cpng – Gewoo

+0

私は見て、私は間違っていた。しかし、あなたはまだコライダーと遊ぶことができます。しかし、それはあなたのためのオプションではない場合は私に知らせてください。私はunity2dで素晴らしい経験を持っていませんが、解決策はPhysics 2Dのプロジェクト設定にあると思います。それでは、ペネトレーションペナルティやその他の設定で試してみるように言いました。 –

+0

申し訳ありませんが、コライダーを変更することはできません。 – Gewoo

関連する問題