- 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
![](https://koobas.hobune.stream/wayback/20220613125503im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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