- Home /
Gravity for my AI
I am currently trying to implement gravity for my AI. What I have currently works but it doesn't reset when he lands because I'm struggling with CharacterController.isGrounded because it seems to vibrate between states when it's obviously grounded so I assume the problem is in my code. I will post the update function here and hopefully someone can help me out.
The actual gravity calculation is at the bottom of the code; I've left it all in for debugging purposes but it's not very long.
void Update()
{
if(players.Count > 0 && canChangeTarget)
{
selectedTarget = players[Random.Range(0, players.Count)].gameObject;
}
if(!isAggro)
{
canChangeTarget = true;
selectedTarget = null;
//pathfind
}else if(isAggro && selectedTarget != null)
{
lastActionDecayTimer -= Time.deltaTime;
//attack
//rotate the character
if(character.isGrounded)
{
Quaternion rotation = Quaternion.LookRotation(selectedTarget.transform.position - transform.position);
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, rotation.eulerAngles.y, 0f), turnSpeed * Time.deltaTime);
}
if(lastActionDecayTimer <= 0)
{
//start dropping aggro
//if attacked, reset or does attack, reset lastActionDecayTimer
attentionChangeTimer -= Time.deltaTime;
}
if(attentionChangeTimer <= 0)
{
//only change if not using an action eg attacking in a combo
//only run this timer if no action has been performed for a set time
attentionChangeTimer = attentionChangeTime;
lastActionDecayTimer = lastActionDecayTime;
canChangeTarget = true;
}else
{
canChangeTarget = false;
}
}
vSpeed += gravity * Time.deltaTime;
Debug.Log(vSpeed);
//move the character
if(selectedTarget != null && character.isGrounded)
moveDirection = new Vector3(transform.forward.x, vSpeed, transform.forward.z);
else
moveDirection.y -= vSpeed;
character.Move(moveDirection * moveSpeed * Time.deltaTime);
}
Your answer
Follow this Question
Related Questions
2D Top Down Character being Pulled down and movement script not working? 2 Answers
Can't get gravity to work on Character Controller 2 Answers
controller.Move doesn't stay grounded when walking down slope 3 Answers
Unity AI character controller gravity 0 Answers
Round Planets and Movement on them 2 Answers