p5 векторная вычитка «под», возвращающая ошибку

#javascript #reactjs #p5.js

Вопрос:

Я пытаюсь загрузить эскиз p5 в сборку react. Используя react-p5-оболочку, я могу успешно визуализировать свой холст на экране, однако некоторые векторные функции вызывают ошибки.

         var distance = this.position.dist(ball.position)
        var minDistance = this.radius   ball.radius
        if (ball === this || distance > minDistance) {
            return
        }
        // balls colliding. First, move them apart.
        console.log(this.position) 
        console.log(ball.position)
        let angle = p5.Vector.sub(this.position, ball.position)// <= RIGHT HERE[![Error Message][1]][1]
        // return
 

В этой части моя консоль.журналы оба возвращают допустимые 3D-векторы, однако, когда я использую p5.Vector.sub(v1, v2), мне возвращается ошибка с надписью «Ошибка типа: Не удается прочитать свойство» sub «неопределенного». Я вспомогательную функцию, возможно, путаю с чем-то другим? Я включил изображение моего вывода об ошибке. Я не уверен, почему программа считывает их как неопределенные, когда я получаю значения для них в console.log. Спасибо вам за любой совет

Комментарии:

1. Ошибка в том, что вы говорите, что p5.Vector это ничего не значит, поэтому вызов p5.Vector.whatever() никогда не может увенчаться успехом. Не то чтобы ваши аргументы были плохими. Итак: проверьте p5 , действительно ли существует в области видимости?

Ответ №1:

По словам автора react-p5-wrapper здесь, в этом выпуске

p5, который передается в модуль, не совпадает с глобальным p5, который вы традиционно получаете с тегом сценария. Чтобы получить доступ к определенным вещам с помощью этого пакета (из-за самого модуля узла p5), вам необходимо использовать p5.constructor.[что-то]

В основном используйте p5.constructor.Vector.sub(this.position, ball.position) в вашем случае.

Комментарии:

1. Вы правы, в этом-то и была проблема! Добавление p5.конструктор полностью устранило ошибку. Спасибо