using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Collision : MonoBehaviour
{
public GameObject door;
public Animator character;
public DoorsLockManager doorslockmanager;
private float speed;
private void OnTriggerEnter(Collider other)
{
if(other.name == door.name &&
doorslockmanager.locked == true)
{
character.SetFloat("Walking Speed", speed);
}
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float distanceFromTarget = Vector3.Distance(character.transform.position, door.transform.position);
if (distanceFromTarget < 3)
{
speed = (distanceFromTarget / 10) / 1;
}
}
}
В этом случае я проверяю расстояние 3 от двери.Персонаж медленно снижает скорость ходьбы.Но это никогда не останавливает персонажа, продолжайте медленно идти через дверь.
Я хочу, чтобы персонаж, например, если он начинает замедляться на расстоянии 3 от двери, а затем останавливает скорость ходьбы 0 на расстоянии 1 или 0,5f
Хватит ходить немного перед дверью.И не просто внезапно прекратить ходить, а медленно снизить скорость до 0.
Это рабочий скрипт.Но я все еще немного запутался в части вычисления скорости:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Collision : MonoBehaviour
{
public GameObject door;
public Animator character;
public DoorsLockManager doorslockmanager;
private float speed = 0;
private bool triggered = false;
private void OnTriggerEnter(Collider other)
{
if (other.name == door.name &&
doorslockmanager.locked == true)
{
triggered = true;
}
if(doorslockmanager.locked == false)
{
triggered = false;
}
}
// Update is called once per frame
void Update()
{
float distanceFromTarget = Vector3.Distance(character.transform.position, door.transform.position);
if (triggered == true)
{
speed = (distanceFromTarget / 10);
character.SetFloat("Walking Speed", speed);
character.SetBool("Idle", true);
}
}
}
Эта строка:
speed = (distanceFromTarget / 10);
Кажется, что персонаж вместо этого слишком медленно замедляется в первый размедленно замедляй плавную ходьбу * 1014