23Oesadn
Picopat
- Katılım
- 3 Kasım 2024
- Mesajlar
- 218
Daha fazla
- Cinsiyet
- Erkek
Merhaba, ben şuan sadece unityi daha iyi kavramak için bir proje yapıyorum ve projemde hiç denemediğim bir şeyi yaptım. Bu şey de alana girince bütün karakter animasyonlarının durup hepsinin bana bakması ama bunu 50 kere farklı şekilde yazmama rağmen olmadı yapamadım.
Adımlarım:
Hierarchy'de sağ tık creat empty yaptım ve içine bu kodu yazdım.
Sonra box collider ekleyip Is Trigger'ı işaretledim ve konumunu ayarladım.
İlk başta hiç biri durmadı ama animasyonlarımın loop timesini kapattığımda birinin durduğunu diğerinin durmadığını gördüm. Ne yapabilirim hiç bilmiyorum.
Adımlarım:
Hierarchy'de sağ tık creat empty yaptım ve içine bu kodu yazdım.
C#:
using UnityEngine;
using System.Collections;
public class DüğünDurma : MonoBehaviour
{
public Animator[] animators;
public float rotationSpeed = 5f;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
foreach (Animator anim in animators)
{
anim.speed = 0;
LookAtPlayer();
}
}
void LookAtPlayer()
{
Transform playerTransform = GameObject.FindWithTag("Player").transform;
foreach (Animator anim in animators)
{
StartCoroutine(RotateToFace(anim.transform, playerTransform));
}
}
IEnumerator RotateToFace(Transform character, Transform player)
{
while (Quaternion.Angle(character.rotation, player.rotation) > 0.1f)
{
character.rotation = Quaternion.Slerp(character.rotation, player.rotation, rotationSpeed * Time.deltaTime);
yield return null;
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
foreach (Animator anim in animators)
{
anim.speed = 1;
}
}
}
}
İlk başta hiç biri durmadı ama animasyonlarımın loop timesini kapattığımda birinin durduğunu diğerinin durmadığını gördüm. Ne yapabilirim hiç bilmiyorum.