I have a controller handler that I want to make capsule collision with, but my capsule cast debug isn't even launching?
using UnityEngine;
using System.Collections;
[RequireComponent (typeof (CapsuleCollider))]
public class PlayerControllerHandler : MonoBehaviour {
public LayerMask collisionMask;
private CapsuleCollider cc;
public int collisions;
void Start () {
cc = GetComponent ();
}
public void Move (Vector3 velocity) {
Collide (ref velocity);
transform.Translate (velocity);
}
void Collide (ref Vector3 velocity) {
Vector3 point1 = transform.TransformPoint (cc.center + Vector3.down * cc.radius);
Vector3 point2 = transform.TransformPoint (cc.center + Vector3.up * cc.radius);
Debug.Log (point1 + " " + point2);
float rayDistance = velocity.magnitude;
RaycastHit hit;
if (Physics.CapsuleCast (point1, point2, cc.radius, velocity, out hit, rayDistance))
{
Debug.Log ("Collision");
if (Mathf.Abs (transform.position.x - hit.point.x) < Mathf.Abs (velocity.x))
{
collisions ++;
velocity.x = transform.position.x - hit.point.x;
}
if (Mathf.Abs (transform.position.y - hit.point.y) < Mathf.Abs (velocity.y))
{
collisions ++;
velocity.y = transform.position.y - hit.point.y;
}
if (Mathf.Abs (transform.position.z - hit.point.z) < Mathf.Abs (velocity.z))
{
collisions ++;
velocity.z = transform.position.z - hit.point.z;
}
}
}
}
↧