- Home /
Linecast not working when main character controller is not moving
When the player is moving, the linecast works perfectly. When the player is standing still, the linecast will always fail. I did a debug of this and had the SimpleMove script I use to control the player and every frame update, printed out the X and Z positions of the GameObject. It only printed while I was in movement. The code is sound but for some reason the position of the player isn't accessible or innacurate when the player is not moving. Very bizarre.
Has anyone come across this?
The simple move script:
var maxHealth : int = 100;
var hitDamage : int = 10;
var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
private var dead : boolean = false;
var curHealth : int;
private var moveDirection : Vector3 = Vector3.zero;
function Start()
{
curHealth = maxHealth;
}
function Update()
{
if(dead)
return;
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
// We are grounded, so recalculate
// move direction directly from axes
moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
}
// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
// Move the controller
controller.Move(moveDirection * Time.deltaTime);
print("Player x: " + transform.position.x + " Player z: " + transform.position.z);
}
function DamagePlayer()
{
if(dead)
return;
curHealth -= hitDamage;
if(curHealth == 0)
dead = true;
}
Dealing with the same problem, the linecast fails even if I am right next to the object i am linecasting to when I am still. If I am moving, it is accurate (fails on non line of sights and succeeds when it does have LOS).
function CanSeePlayer()
{
if(Physics.Linecast(transform.position, player.transform.position) == false)
{
canSeePlayer = true;
}
else
{
canSeePlayer = false;
}
if(canSeePlayer)
{
print("He can see you!" + Time.deltaTime);
}
else
{
print("HE CANNOT SEE YOU!" + Time.deltaTime);
}
}
To recap, linecasting is not working when the player is not moving. When the player is moving, it works fine. It seems as if the player location does not update or is inaccessible when the player is not moving.
Any ideas?
@Tordur In the update function on my NPC pathing script. It's attached to an object so it should update every frame.
Your answer
Follow this Question
Related Questions
movement disable when camera changes view 1 Answer
Move camera forward/backwards with mouse wheel 1 Answer
How to make my player look in the direction of its movement? 3 Answers
Moving (teleporting) player and camera when they enter a certain area 5 Answers
Make camera follow cylindrical track 1 Answer