- Home /
Question by
Paul2357 · Aug 05, 2016 at 12:09 AM ·
c#collisionmovementcollision detectioncharacter controller
Player movement ignores some collision
So I have a player movement script attached to my player and it seems to ignore some of the collisions in my game. It doesn't ignore all of them (some of the models it will only ignore certain walls). I'm at a loss at how to fix this. I've tried adding box colliders and it still ignores those. I was thinking of looking into the character controller but I'm not sure how to handle the 2.5d sidescrolling for the game.
Here is the current script attached for player movement
using UnityEngine;
using System.Collections;
public class PlayerMovement : Player {
#region Variables
//Player
public Rigidbody player;
//Jump
public int jumpForce = 300;
public int startJumpForce;
//Rotation Handling
private Quaternion lookleft;
private Quaternion lookRight;
//Animation
private float inputH;
private float inputV;
#endregion
#region Start
void Start()
{
//Rigidbody component of player
player = GetComponent<Rigidbody>();
//Get values to handle rotation
lookRight = transform.rotation;
lookleft = lookRight * Quaternion.Euler(0, 180, 0);
//Assign Jump Force to Start Jump Force
startJumpForce = jumpForce;
//Animator
anim = GetComponent<Animator>();
}
#endregion
#region Jump Force Getter and Setter
public int JumpForce
{
get { return jumpForce; }
set
{
jumpForce = value;
}
}
#endregion
#region Update
public override void Update()
{
//Tracking
inputH = Input.GetAxis("Horizontal");
inputV = Input.GetAxis("Vertical");
anim.SetFloat("inputH", inputH);
anim.SetFloat("inputV", inputV);
//Allows jumping only if onFloor flag is true
if (onFloor)
{
anim.SetBool("jump", false);
//Handles Jump Command
if (Input.GetKeyDown(KeyCode.Space) || (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow)))
{
SoundManager.instance.PlaySingle(jumpSound);
anim.SetBool("jump", true);
player.AddForce(0, jumpForce, 0);
jumpForce = startJumpForce;
}
}
if (!leftBoundaryHit)
{
//Handles Left Movement
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
{
if (onFloor)
{
//Animation
anim.Play("Run");
}
//Switch Flag to False for projectiles
movingRight = false;
movingLeft = true;
//Flip model to face direction of travel
transform.rotation = lookleft;
//Move Player
transform.position += transform.forward * speed * Time.deltaTime;
}
}
if (!rightBoundaryHit)
{
//Handles Right Movement
if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
{
if (onFloor)
{
//Animation
anim.Play("Run");
}
//Switch Flag to true for projectiles
movingLeft = false;
movingRight = true;
//Flip model to face direction of travel
transform.rotation = lookRight;
//Move Player
transform.position += transform.forward * speed * Time.deltaTime;
}
}
//GOD MODE FOR JUMPING -- USE FOR TESTING PURPOSES
if (Input.GetKeyDown(KeyCode.F))
{
jumpForce = 500;
}
}
#endregion
//END OF FILE BELOW
}
Comment