- Home /
Checking if a Vector3 is a int
I want to make make my character walk back if he walks into a stone or a tree in a grid based game.
here is my script :
var startPoint : Vector3;
var endPoint : Vector3;
var speed : float;
private var increment : float;
var isMoving : boolean;
var tileSpace : float;
var tileOn : String;
var tile : GameObject [];
var tileStatts; var walkedDir : Vector3;
function Start () {
startPoint = transform.position;
endPoint = transform.position;
}
function Update () {
var pos = transform.position;
calculateTileOn ();
if(tileOn == "Tree" || tileOn == "Stone"){
increment = 0;
isMoving = true;
switch (walkedDir){
case Vector3.up :
startPoint = transform.position;
endPoint = new Vector3(transform.position.x, transform.position.y - tileSpace, transform.position.z );
break;
case Vector3.down :
startPoint = transform.position;
endPoint = new Vector3(transform.position.x, transform.position.y + tileSpace, transform.position.z );
break;
case Vector3.left :
startPoint = transform.position;
endPoint = new Vector3(transform.position.x - tileSpace, transform.position.y, transform.position.z );
break;
case Vector3.rigth :
startPoint = transform.position;
endPoint = new Vector3(transform.position.x + tileSpace, transform.position.y - tileSpace, transform.position.z );
break;
}
}
if(increment <=1 && isMoving == true){
increment += speed/100;
}
else{
isMoving = false;
}
if(isMoving){
transform.position = Vector3.Lerp(startPoint, endPoint, increment);
}
if(Input.GetButton("forward") && isMoving == false){
increment = 0;
isMoving = true;
startPoint = transform.position;
endPoint = new Vector3(transform.position.x, transform.position.y + tileSpace, transform.position.z );
walkedDir = Vector3.up;
}
if(Input.GetButton("backward") && isMoving == false){
increment = 0;
isMoving = true;
startPoint = transform.position;
endPoint = new Vector3(transform.position.x, transform.position.y - tileSpace, transform.position.z );
walkedDir = Vector3.down;
}
if(Input.GetButton("left") && isMoving == false){
increment = 0;
isMoving = true;
startPoint = transform.position;
endPoint = new Vector3(transform.position.x - tileSpace, transform.position.y, transform.position.z );
walkedDir = Vector3.left;
}
if(Input.GetButton("rigth") && isMoving == false){
increment = 0;
isMoving = true;
startPoint = transform.position;
endPoint = new Vector3(transform.position.x + tileSpace, transform.position.y, transform.position.z );
walkedDir = Vector3.rigth;
}
}
function calculateTileOn() {
var hit: RaycastHit2D = Physics2D.Raycast(transform.position, -Vector2.up);
if(1 == 1){
tileOn = hit.collider.gameObject.tag;
tile = GameObject.FindGameObjectsWithTag (tileOn);
tileStatts = tile.Tile;
}
}
Could you tell me how to change my script so that the character walks back when it is on a int (center of a Tile).
And could you also tell me what I am doing different with my rigth, because it says Object reference not set to an instance of an object when I press my rigth key.
Ups, but that is not the problem, because my input is also set to rigth.
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Make an FPS gun point at the mouse position. 2 Answers
Vector3 Projection 2 Answers
Rotating a character's velocity? 3 Answers
Getting (Input) values before running rest of script. 0 Answers