Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2018, 09:25   #1
Natasha_001
Пользователь
 
Регистрация: 09.10.2016
Сообщений: 17
По умолчанию Unity 5, CS1061 'Component" не содержит определения для "attachedRigidbody"

Помогите разобраться с ошибкой
Ошибка
Ошибка CS1061 'Component" не содержит определения для "attachedRigidbody" и не удалось найти метод расширения "attachedRigidbody", принимающий тип "Component" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку). Assembly-CSharp-firstpass C:\Users\User\Desktop\Racing Zero_src\Assets\Standard Assets\ParticleSystems\Scripts\Wate rHoseParticles.cs

Код:
using System;
using UnityEngine;
 
namespace UnityStandardAssets.Effects
{
    public class WaterHoseParticles : MonoBehaviour
    {
        public static float lastSoundTime;
        public float force = 1;
 
 
        private ParticleCollisionEvent[] m_CollisionEvents = new ParticleCollisionEvent[16];
        private ParticleSystem m_ParticleSystem;
 
 
        private void Start()
        {
            m_ParticleSystem = GetComponent<ParticleSystem>();
        }
 
 
        private void OnParticleCollision(GameObject other)
        {
            int safeLength = m_ParticleSystem.GetSafeCollisionEventSize();
 
            if (m_CollisionEvents.Length < safeLength)
            {
                m_CollisionEvents = new ParticleCollisionEvent[safeLength];
            }
 
            int numCollisionEvents = m_ParticleSystem.GetCollisionEvents(other, m_CollisionEvents);
            int i = 0;
 
            while (i < numCollisionEvents)
            {
                if (Time.time > lastSoundTime + 0.2f)
                {
                    lastSoundTime = Time.time;
                }
 
                var col = m_CollisionEvents[i].colliderComponent;
 
                if (col.attachedRigidbody != null)
                {
                    Vector3 vel = m_CollisionEvents[i].velocity;
                    col.attachedRigidbody.AddForce(vel*force, ForceMode.Impulse);
                }
 
                other.BroadcastMessage("Extinguish", SendMessageOptions.DontRequireReceiver);
 
                i++;
            }
        }
    }
}
Natasha_001 вне форума Ответить с цитированием
Старый 25.04.2018, 09:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

У вас
Код:
m_CollisionEvents[i].colliderComponent
имеет тип Component. У него нет этого метода. Можно, конечно, кастануть, но проще сделать стандартно:
Код:
other.GetComponent<Rigidbody>()
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
'WebRequest' не содержит определения для 'GetResponse' hiller123 Общие вопросы .NET 2 05.10.2017 18:53
Unity интерфейс для панорамы illanka2 C# (си шарп) 6 06.04.2017 20:40
область определения для cos PotatoCaptain Общие вопросы C/C++ 1 05.12.2011 17:36
Перебор для определения строки Maksval Microsoft Office Excel 8 24.12.2010 09:58