Мой персонаж скользит всякий раз, когда он движется, и я вообще не хочу, чтобы он скользил.
Я попробовал установить высокий уровень трения, чтобы это исправить, но это не сработало. Я пытался запрограммировать его, чтобы он перестал скользить, но это не сработало. В чем может быть причина?
Мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovementSteamDeck : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
public Transform groundCheck;
public float checkRadius = 0.1f;
public float coyoteTime = 0.2f;
private float coyoteTimeCounter;
private bool isGrounded;
private bool jumpHeld;
private Rigidbody2D rb;
private Animator anim;
void Start()
{
rb = GetComponent();
anim = GetComponent();
}
void Update()
{
Move();
jumpHeld = Input.GetButton("Jump"); // A button for jumping on Steam Deck
UpdateAnimations();
}
void FixedUpdate()
{
if (jumpHeld && (isGrounded || coyoteTimeCounter > 0))
{
Jump();
}
}
void Move()
{
// Detect joystick input for Steam Deck
float moveInput = Input.GetAxis("Horizontal");
// Check if both A and D keys or both Left and Right arrow keys are pressed
bool aPressed = Input.GetKey(KeyCode.A);
bool dPressed = Input.GetKey(KeyCode.D);
bool leftArrowPressed = Input.GetKey(KeyCode.LeftArrow);
bool rightArrowPressed = Input.GetKey(KeyCode.RightArrow);
if ((aPressed && dPressed) || (leftArrowPressed && rightArrowPressed))
{
moveInput = 0; // Prevent movement if both keys are pressed
}
else if (aPressed || leftArrowPressed)
{
moveInput = -1; // Move left when only A or Left Arrow is pressed
}
else if (dPressed || rightArrowPressed)
{
moveInput = 1; // Move right when only D or Right Arrow is pressed
}
// Apply movement or stop sliding
if (moveInput == 0)
{
rb.velocity = new Vector2(0, rb.velocity.y); // Stop horizontal movement to prevent sliding
}
else
{
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y); // Move player
transform.localScale = new Vector3(Mathf.Sign(moveInput), 1, 1); // Flip character
}
}
void Jump()
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
isGrounded = false;
coyoteTimeCounter = 0f;
}
void UpdateAnimations()
{
anim.SetFloat("Speed", Mathf.Abs(rb.velocity.x));
anim.SetBool("isJumping", !isGrounded && coyoteTimeCounter 0.5f)
{
isGrounded = true;
coyoteTimeCounter = coyoteTime;
if (jumpHeld)
{
Jump();
}
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = false;
coyoteTimeCounter = 0f; // Reset coyote time when leaving the ground
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(groundCheck.position, checkRadius);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... om-sliding
Как предотвратить скольжение моего персонажа? ⇐ C#
Место общения программистов C#
-
Anonymous
1731595345
Anonymous
Мой персонаж скользит всякий раз, когда он движется, и я вообще не хочу, чтобы он скользил.
Я попробовал установить высокий уровень трения, чтобы это исправить, но это не сработало. Я пытался запрограммировать его, чтобы он перестал скользить, но это не сработало. В чем может быть причина?
Мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovementSteamDeck : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
public Transform groundCheck;
public float checkRadius = 0.1f;
public float coyoteTime = 0.2f;
private float coyoteTimeCounter;
private bool isGrounded;
private bool jumpHeld;
private Rigidbody2D rb;
private Animator anim;
void Start()
{
rb = GetComponent();
anim = GetComponent();
}
void Update()
{
Move();
jumpHeld = Input.GetButton("Jump"); // A button for jumping on Steam Deck
UpdateAnimations();
}
void FixedUpdate()
{
if (jumpHeld && (isGrounded || coyoteTimeCounter > 0))
{
Jump();
}
}
void Move()
{
// Detect joystick input for Steam Deck
float moveInput = Input.GetAxis("Horizontal");
// Check if both A and D keys or both Left and Right arrow keys are pressed
bool aPressed = Input.GetKey(KeyCode.A);
bool dPressed = Input.GetKey(KeyCode.D);
bool leftArrowPressed = Input.GetKey(KeyCode.LeftArrow);
bool rightArrowPressed = Input.GetKey(KeyCode.RightArrow);
if ((aPressed && dPressed) || (leftArrowPressed && rightArrowPressed))
{
moveInput = 0; // Prevent movement if both keys are pressed
}
else if (aPressed || leftArrowPressed)
{
moveInput = -1; // Move left when only A or Left Arrow is pressed
}
else if (dPressed || rightArrowPressed)
{
moveInput = 1; // Move right when only D or Right Arrow is pressed
}
// Apply movement or stop sliding
if (moveInput == 0)
{
rb.velocity = new Vector2(0, rb.velocity.y); // Stop horizontal movement to prevent sliding
}
else
{
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y); // Move player
transform.localScale = new Vector3(Mathf.Sign(moveInput), 1, 1); // Flip character
}
}
void Jump()
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
isGrounded = false;
coyoteTimeCounter = 0f;
}
void UpdateAnimations()
{
anim.SetFloat("Speed", Mathf.Abs(rb.velocity.x));
anim.SetBool("isJumping", !isGrounded && coyoteTimeCounter 0.5f)
{
isGrounded = true;
coyoteTimeCounter = coyoteTime;
if (jumpHeld)
{
Jump();
}
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = false;
coyoteTimeCounter = 0f; // Reset coyote time when leaving the ground
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(groundCheck.position, checkRadius);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79189227/how-to-prevent-my-character-from-sliding[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия