06-01-2016, 05:44 PM
Ho fatto una scena di prova e anche a mè dava il tuo problema. l'ho risolto cambiando il Collision Detection del rigidbody del player da Discrete a Continuous.
Questo è lo script che ho usato per il movimento del player:
Questo è lo script che ho usato per il movimento del player:
Codice:
using UnityEngine;
using System.Collections;
public class player1Move : MonoBehaviour {
//Public:
public float force=5f;
public float force_up=10f;
//Private:
Rigidbody2D pl1Rig;
// Use this for initialization
void Awake()
{
pl1Rig=GetComponent<Rigidbody2D>();
}
void FixedUpdate ()
{
if(Input.GetKey(KeyCode.LeftArrow)||Input.GetKey(KeyCode.A))
move("left");
else if(Input.GetKey(KeyCode.RightArrow)||Input.GetKey(KeyCode.D))
move ("right");
else if(Input.GetKey(KeyCode.UpArrow)||Input.GetKey(KeyCode.W))
move ("up");
}
void move(string dir){
switch(dir)
{
case "left":
pl1Rig.AddForce(Vector2.left*force,ForceMode2D.Impulse);
break;
case "right":
pl1Rig.AddForce(Vector2.right*force,ForceMode2D.Impulse);
break;
case "up":
pl1Rig.AddForce(Vector2.up*force_up,ForceMode2D.Impulse);
break;
}
}
}