Question by
UpheavalEntertainment · Nov 25, 2016 at 11:36 PM ·
collidertriggerplayerbugnot working
PLAYER NOT ACTIVATING TRIGGER WHEN ON TOP OF THE COLLIDER! IS THIS A BUG
Ok, this is hard to explain, when my player goes through a "triggered" block on the wall side, the player goes through freely. but if the player lands ontop of the collider. the player just finds it as a floor and doesnt go through or anything, is this a bug? If someone can help please i cannot keep making my game :) The players components have a collider(Not triggered) and a rigid body love you guys. my player script is here
using UnityEngine; using System.Collections;
public class CharacterPersonController : MonoBehaviour{
//public GameObject Player;
[System.Serializable]
public class MoveSettings
{
public float forwardVel = 12;
public float rotateVel = 100;
public float jumpVel = 25;
public float distToGrounded = 1.01f;
public LayerMask ground;
}
[System.Serializable]
public class PhysSettings
{
public float downAccel = 0.75f;
}
[System.Serializable]
public class InputSettings
{
public float inputDelay = 0.1f;
public string FORWARD_AXIS = "Vertical";
public string TURN_AXIS = "Horizontal";
public string JUMP_AXIS = "Jump";
}
public MoveSettings moveSetting = new MoveSettings ();
public PhysSettings physSetting = new PhysSettings ();
public InputSettings inputSetting = new InputSettings ();
Vector3 Velocity = Vector3.zero;
Quaternion targetRotation;
Rigidbody rBody;
float forwardInput, turnInput, jumpInput;
public Quaternion TargetRotation
{
get { return targetRotation; }
}
bool Grounded()
{
return Physics.Raycast (transform.position, Vector3.down, moveSetting.distToGrounded, moveSetting.ground);
}
void Start()
{
// GetComponent<CapsuleCollider> ().isTrigger = false;
targetRotation = transform.rotation;
if (GetComponent<Rigidbody>())
rBody = GetComponent<Rigidbody>();
else
Debug.LogError("the Character needs a riginbody");
forwardInput = turnInput = jumpInput = 0;
}
void GetInput()
{
forwardInput = Input.GetAxis(inputSetting.FORWARD_AXIS);
turnInput = Input.GetAxis(inputSetting.TURN_AXIS);
jumpInput = Input.GetAxisRaw (inputSetting.JUMP_AXIS);
}
void Update()
{
GetInput();
Turn();
}
void FixedUpdate()
{
Run ();
Jump ();
rBody.velocity = transform.TransformDirection (Velocity);
}
void Run()
{
if (Mathf.Abs (forwardInput) > inputSetting.inputDelay)
{
//move
Velocity.z = moveSetting.forwardVel * forwardInput;
}
else
Velocity.z = 0;
}
void Turn()
{
if (Mathf.Abs(turnInput) > inputSetting.inputDelay)
{ targetRotation *= Quaternion.AngleAxis(moveSetting.rotateVel * turnInput * Time.deltaTime, Vector3.up); }
transform.rotation = targetRotation;
}
void Jump()
{
if (jumpInput > 0 && Grounded ())
{
Velocity.y = moveSetting.jumpVel;
} else if (jumpInput == 0 && Grounded ())
{
Velocity.y = 0;
}
else
{
Velocity.y -= physSetting.downAccel;
}
}
}
Comment