- Home /
3 errors do not know how to fix...
My script is this: using UnityEngine; using System.Collections;
[RequireComponent (typeof(BoxCollider))] public class Playerphysics : MonoBehaviour {
public LayerMask collisionMask;
private BoxCollider collider;
private Vector3 s;
private Vector3 c;
private float skin = .005f;
[HideInInspector]
public bool grounded;
Ray ray;
RaycastHit hit;
void Start() {
collider = GetComponent<BoxCollider> ();
s = collider.size;
c = collider.center;
}
public void Move(Vector2 amountToMove) {
float deltaY = amountToMove.y;
float deltaX = amountToMove.x;
Vector2 p = transform.position;
for (int i = 0; i <=3; i ++) {
float dir = Mathf.Sign(deltaY);
float x = (p.x + c.x -s.x/2) + s.x/2 * i;//left, centre and then rightmost point of collider
float y = p.y + c.y + s.y/2 * dir;//bottome of collider
ray = new Ray(new Vector2(x,y), new Vector2(0,dir));
if (Physics.Raycast(Ray,out hit,Mathf.Abs(deltaY),collisionMask)) {
// Get Distance beetween player and gorund
float dst = Vector3.Distance (ray.origin, hit.point);
//Stop player's downwards movement after coming within skin with of a collider
if (dst > skin) {
}
else {
deltaY = 0;
}
grounded = true;
break;
}
}
Vector2 finalTransform = new Vector2(deltaX,deltaY);
transform.Translate(finalTransform);
}
}
The errors say: 1) Argument 1 cannot convert "object" expression to type "UnityEngine.Vector3" 2)The best overloaded mthed match for"UnityEngine.Physics.Raycast(UnityEngine.Vector3, Unity Engine.Vecotr 3, float, int)" has some invalid arguments. 3) Expression dentoes a "type", where a "variable", "value" or "method group" was expected
line 33. your first Raycast parameter is "Ray" when it should be "ray" - Like you have it in line 31.
Answer by liortal · May 01, 2014 at 07:54 PM
The problem is with this code (your posted line 31):
ray = new Ray(new Vector2(x,y), new Vector2(0,dir));
if (Physics.Raycast(Ray,out hit,Mathf.Abs(deltaY),collisionMask)) {
You are passing Ray (note the capital R) as a parameter to the Raycast method, however you really wanted to pass ray (small case r).