Я новичок в Unity и пытаюсь создать небольшую короткую игру. Все идет гладко, кроме анимации смерти, которая должна воспроизводиться, когда таймер достигает нуля или заканчивается здоровье персонажа. Анимация воспроизводится, но мой персонаж парит в воздухе во время воспроизведения анимации.
Смотрите ниже:
Персонаж стоит нормально
воспроизводится анимация смерти
I попробовал изменить размер контроллера персонажа, так как подозревал, что это источник моей проблемы:
ctrl.height= 0.16;
ctrl.radius= 0.14;
Я также использовал raycasting, когда искал в Интернете и обнаружил, что это может быть полезно:
RaycastHit hit;
// ارسال Ray به سمت پایین از موقعیت فعلی پلیر
if (Physics.Raycast(transform.position, Vector3.down, out hit, Mathf.Infinity))
{
print("Raycast");
// تنظیم موقعیت Y کاراکتر بر اساس موقعیت برخورد با زمین
transform.position = new Vector3(transform.position.x, hit.point.y, transform.position.z);
}
Увы, ни один из них не сработал. Я также проверил, оператор if работает нормально. Честно говоря, я не знаю, что еще я могу сделать.
мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Movement : MonoBehaviour
{
[SerializeField]private GameObject endtext;
[SerializeField]private GameObject restart;
[SerializeField]private GameObject dust;
[SerializeField]private GameObject Timertext;
[SerializeField]private GameObject[] health;
private CharacterController ctrl;
private float jump;
private Animator playerAnimator;
private float gravity;
private int counter;
private float timer;
public bool win;
public bool gameover;
// Start is called before the first frame update
void Start()
{
gravity= 15f;
counter= 0;
timer= 25;
gameover= false;
win= false;
endtext.SetActive(false);
restart.SetActive(false);
ctrl = GetComponent();
playerAnimator = GetComponent();
playerAnimator.SetBool("IsRun", false);
playerAnimator.SetBool("IsJump", false);
playerAnimator.SetBool("IsDead", false);
playerAnimator.SetBool("FirstState", true);
}
// Update is called once per frame
void Update()
{
if (!(win) && !(gameover))
{
jump -= gravity * Time.deltaTime;
Vector3 direction= new Vector3(Input.GetAxis("Horizontal") * Time.deltaTime * 5, jump * Time.deltaTime, 0);
ctrl.Move(direction);
if(Input.GetAxis("Horizontal") > 0)
{
transform.rotation= Quaternion.Euler(0, 90, 0);
}
if(Input.GetAxis("Horizontal") < 0)
{
transform.rotation= Quaternion.Euler(0, 270, 0);
}
if(Input.GetKeyDown(KeyCode.Space) && (ctrl.isGrounded))
{
jump= 8;
playerAnimator.SetBool("IsJump", true);
}
else
{
playerAnimator.SetBool("IsJump", false);
}
if(direction.x != 0)
{
playerAnimator.SetBool("IsRun", true);
}
else
{
playerAnimator.SetBool("IsRun", false);
}
timer -= Time.deltaTime;
Timertext.GetComponent().text= ((int)timer).ToString() + " Seconds";
if(Vector3.Distance(transform.position,GameObject.Find("EndPoint").transform.position)
Подробнее здесь: https://stackoverflow.com/questions/789 ... d-in-unity
Персонаж парит в воздухе, когда анимация смерти воспроизводится в единстве. ⇐ C#
Место общения программистов C#
1726587106
Anonymous
Я новичок в Unity и пытаюсь создать небольшую короткую игру. Все идет гладко, кроме анимации смерти, которая должна воспроизводиться, когда таймер достигает нуля или заканчивается здоровье персонажа. Анимация воспроизводится, но мой персонаж парит в воздухе во время воспроизведения анимации.
Смотрите ниже:
Персонаж стоит нормально
воспроизводится анимация смерти
I попробовал изменить размер контроллера персонажа, так как подозревал, что это источник моей проблемы:
ctrl.height= 0.16;
ctrl.radius= 0.14;
Я также использовал raycasting, когда искал в Интернете и обнаружил, что это может быть полезно:
RaycastHit hit;
// ارسال Ray به سمت پایین از موقعیت فعلی پلیر
if (Physics.Raycast(transform.position, Vector3.down, out hit, Mathf.Infinity))
{
print("Raycast");
// تنظیم موقعیت Y کاراکتر بر اساس موقعیت برخورد با زمین
transform.position = new Vector3(transform.position.x, hit.point.y, transform.position.z);
}
Увы, ни один из них не сработал. Я также проверил, оператор if работает нормально. Честно говоря, я не знаю, что еще я могу сделать.
мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Movement : MonoBehaviour
{
[SerializeField]private GameObject endtext;
[SerializeField]private GameObject restart;
[SerializeField]private GameObject dust;
[SerializeField]private GameObject Timertext;
[SerializeField]private GameObject[] health;
private CharacterController ctrl;
private float jump;
private Animator playerAnimator;
private float gravity;
private int counter;
private float timer;
public bool win;
public bool gameover;
// Start is called before the first frame update
void Start()
{
gravity= 15f;
counter= 0;
timer= 25;
gameover= false;
win= false;
endtext.SetActive(false);
restart.SetActive(false);
ctrl = GetComponent();
playerAnimator = GetComponent();
playerAnimator.SetBool("IsRun", false);
playerAnimator.SetBool("IsJump", false);
playerAnimator.SetBool("IsDead", false);
playerAnimator.SetBool("FirstState", true);
}
// Update is called once per frame
void Update()
{
if (!(win) && !(gameover))
{
jump -= gravity * Time.deltaTime;
Vector3 direction= new Vector3(Input.GetAxis("Horizontal") * Time.deltaTime * 5, jump * Time.deltaTime, 0);
ctrl.Move(direction);
if(Input.GetAxis("Horizontal") > 0)
{
transform.rotation= Quaternion.Euler(0, 90, 0);
}
if(Input.GetAxis("Horizontal") < 0)
{
transform.rotation= Quaternion.Euler(0, 270, 0);
}
if(Input.GetKeyDown(KeyCode.Space) && (ctrl.isGrounded))
{
jump= 8;
playerAnimator.SetBool("IsJump", true);
}
else
{
playerAnimator.SetBool("IsJump", false);
}
if(direction.x != 0)
{
playerAnimator.SetBool("IsRun", true);
}
else
{
playerAnimator.SetBool("IsRun", false);
}
timer -= Time.deltaTime;
Timertext.GetComponent().text= ((int)timer).ToString() + " Seconds";
if(Vector3.Distance(transform.position,GameObject.Find("EndPoint").transform.position)
Подробнее здесь: [url]https://stackoverflow.com/questions/78970420/character-is-floating-in-the-air-when-death-animation-is-played-in-unity[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия