enma
Hectopat
- Katılım
- 9 Mayıs 2022
- Mesajlar
- 26
Daha fazla
- Cinsiyet
- Erkek
Isgrounded methodu sürekli bir şekilde raycast yüzünden false dönüyor. Sebebini bir türlü çözemedim. Yardımcı olabilir misiniz? Grounded objesinde grounded layerı seçili bu arada.
Using System;
Using Unity. Visualscripting;
Using unityengine;
Using unityengine. Inputsystem;
Public class playercontroller: Monobehaviour.
{
[Header("References")]
[SerializeField] private transform _orientationtransform;
[Header("Movement Settings")]
[SerializeField] private float _movementspeed;
[Header("Jumpt Settings")]
[SerializeField] private key _jumpkey;
[SerializeField] private float jumpforce;
[SerializeField] private float jumpcooldown;
[Header("Ground Check Settings")]
[SerializeField] private float _playerheigh;
[SerializeField] private layermask _groundlayer;
Private bool isgrounded;
Private boolean _canjump = true;
Private rigidbody _playerrigibody;
Private Vector3 _movementdirection;
Private float _horizontalınput;
Private float _verticalınput;
Void Awake()
{
_playerrigibody = GetComponent<Rigidbody>();
_playerrigibody. Freezerotation = true;
}
Void Update()
{
SetInput();
}
Private Void SetInput()
{
_horizontalınput = 0;
_verticalınput = 0;
İf (keyboard. Current. Akey. İspressed) _horizontalınput = -1;
Else if (keyboard. Current. Dkey. İspressed) _horizontalınput = 1;
İf (keyboard. Current. Wkey. İspressed) _verticalınput = 1;
Else if (keyboard. Current. Skey. İspressed) _verticalınput = -1;
İf (keyboard. Current[_jumpKey].ispressed && _canjump && IsGrounded())
{
_canjump = false;
setPlayerJump();
Invoke(nameof(resetjump), 0.5F);
}
}
Private Void setPlayerMovement()
{
_movementdirection = _orientationtransform. Forward * _verticalınput +
_orientationtransform. Right * _horizontalınput;
_playerrigibody. Addforce(_movementdirection. Normalized * _movementspeed, forcemode. Force);
}
Private Void fixedUpdate()
{
setPlayerMovement();
}
Void setPlayerJump()
{
Debug.Log("jump oldu");
Vector3 velocity = _playerrigibody. Linearvelocity;
Velocity. Y = 0;
_playerrigibody. Linearvelocity = velocity;
_playerrigibody. Addforce(transform. Up * jumpforce, forcemode. Impulse);
}
Void ResetJump()
{
_canjump = true;
}
Boolean IsGrounded()
{
Float raydistance = (_playerheigh * 0.5F) + 0.2F;
Bool ishit = physics. Raycast(transform. Position, Vector3.down, raydistance, _groundlayer);
Debug.Log(ishit);
Color raycolor = ishit? Color. Green: Color. Red;
Debug. Drawray(transform. Position, Vector3.down * raydistance, raycolor);
Return ishit;
}
}
Using System;
Using Unity. Visualscripting;
Using unityengine;
Using unityengine. Inputsystem;
Public class playercontroller: Monobehaviour.
{
[Header("References")]
[SerializeField] private transform _orientationtransform;
[Header("Movement Settings")]
[SerializeField] private float _movementspeed;
[Header("Jumpt Settings")]
[SerializeField] private key _jumpkey;
[SerializeField] private float jumpforce;
[SerializeField] private float jumpcooldown;
[Header("Ground Check Settings")]
[SerializeField] private float _playerheigh;
[SerializeField] private layermask _groundlayer;
Private bool isgrounded;
Private boolean _canjump = true;
Private rigidbody _playerrigibody;
Private Vector3 _movementdirection;
Private float _horizontalınput;
Private float _verticalınput;
Void Awake()
{
_playerrigibody = GetComponent<Rigidbody>();
_playerrigibody. Freezerotation = true;
}
Void Update()
{
SetInput();
}
Private Void SetInput()
{
_horizontalınput = 0;
_verticalınput = 0;
İf (keyboard. Current. Akey. İspressed) _horizontalınput = -1;
Else if (keyboard. Current. Dkey. İspressed) _horizontalınput = 1;
İf (keyboard. Current. Wkey. İspressed) _verticalınput = 1;
Else if (keyboard. Current. Skey. İspressed) _verticalınput = -1;
İf (keyboard. Current[_jumpKey].ispressed && _canjump && IsGrounded())
{
_canjump = false;
setPlayerJump();
Invoke(nameof(resetjump), 0.5F);
}
}
Private Void setPlayerMovement()
{
_movementdirection = _orientationtransform. Forward * _verticalınput +
_orientationtransform. Right * _horizontalınput;
_playerrigibody. Addforce(_movementdirection. Normalized * _movementspeed, forcemode. Force);
}
Private Void fixedUpdate()
{
setPlayerMovement();
}
Void setPlayerJump()
{
Debug.Log("jump oldu");
Vector3 velocity = _playerrigibody. Linearvelocity;
Velocity. Y = 0;
_playerrigibody. Linearvelocity = velocity;
_playerrigibody. Addforce(transform. Up * jumpforce, forcemode. Impulse);
}
Void ResetJump()
{
_canjump = true;
}
Boolean IsGrounded()
{
Float raydistance = (_playerheigh * 0.5F) + 0.2F;
Bool ishit = physics. Raycast(transform. Position, Vector3.down, raydistance, _groundlayer);
Debug.Log(ishit);
Color raycolor = ishit? Color. Green: Color. Red;
Debug. Drawray(transform. Position, Vector3.down * raydistance, raycolor);
Return ishit;
}
}