Unity 3d скрипт лазания по скале
Вот пример скрипта на Unity 3D для лазания по скале:
csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WallClimb: MonoBehaviour
{
public float climbSpeed = 5f; // Скорость лазания
public float jumpForce = 5f; // Сила прыжка
private bool isClimbing = false; // Флаг, указывающий, лазим ли мы по скале
private void Update()
{
// Проверяем нажатие клавиши «Space»
if (Input.GetKeyDown(KeyCode.Space))
{
// Если мы уже лазим по скале, то делаем прыжок
if (isClimbing)
{
GetComponent<Rigidbody>().velocity = new Vector3(GetComponent<Rigidbody>().velocity.x, jumpForce, 0);
}
}
}
private void OnTriggerStay(Collider other)
{
// Проверяем, что столкнулись с объектом с тегом «Wall»
if (other.CompareTag(«Wall»))
{
// Проверяем нажатие клавиши «W» или «Up Arrow»
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
{
// Включаем флаг лазания
isClimbing = true;
// Отключаем гравитацию и останавливаем объект
GetComponent<Rigidbody>().useGravity = false;
GetComponent<Rigidbody>().velocity = Vector3.zero;
// Поднимаемся вверх по скале
transform.Translate(Vector3.up * climbSpeed * Time.deltaTime);
}
}
}
private void OnTriggerExit(Collider other)
{
// Проверяем, что вышли из столкновения с объектом с тегом «Wall»
if (other.CompareTag(«Wall»))
{
// Выключаем флаг лазания
isClimbing = false;
// Включаем гравитацию
GetComponent<Rigidbody>().useGravity = true;
}
}
}
Примечания:
— В данном примере предполагается, что у вас есть объект с тегом «Wall», с которым игрок будет взаимодействовать при лазании.
— Скрипт будет включать лазание по скале, когда игрок сталкивается с объектом «Wall» и нажимает клавишу «W» или «Up Arrow». Затем он будет двигаться вверх по скале с заданной скоростью climbSpeed. Когда игрок перестает нажимать клавишу или выходит из столкновения с объектом «Wall», лазание будет отключено и гравитация будет включена.
- Прокомментируйте