我正在尝试在两点之间画一条线,我正在sf::VertexArray shape(sf::Quads, 4);为此使用。
这是我的整个draw功能:
void Stick::draw(sf::RenderTarget& target, sf::RenderStates states) const {
sf::VertexArray shape(sf::Quads, 4);
sf::Vector2f p1Pos = this->p1->getPosition();
sf::Vector2f p2Pos = this->p2->getPosition();
shape[0].position = sf::Vector2f(p1Pos.x + 10.f, p1Pos.y + 10.f);
shape[1].position = sf::Vector2f(p1Pos.x - 10.f, p1Pos.y - 10.f);
shape[2].position = sf::Vector2f(p2Pos.x - 10.f, p2Pos.y - 10.f);
shape[3].position = sf::Vector2f(p2Pos.x + 10.f, p2Pos.y + 10.f);
shape[0].color = sf::Color::Green;
shape[1].color = sf::Color::Green;
shape[2].color = sf::Color::Green;
shape[3].color = sf::Color::Green;
target.draw(shape, states);
}
Run Code Online (Sandbox Code Playgroud)
p1Pos和p2Pos是点的中心坐标。
这给我带来的是一条显然不适用于移动物体的线,因为矩形的角点是固定的,这里有一些例子:(红点不移动,而白点在本例中)
我想实现一个解决方案,以便“棒”(矩形)无论两点的位置如何都可以工作,稍后我将为棒添加某种 onClick …
今天我有一个错误,useSelector当我的 redux 状态改变时,我正在使用的组件不会重新渲染。快速阅读createSlice文档后,我注意到他们正在返回state.something = action.payload,而我没有这样做。
所以在这段代码中:
const personSlice = createSlice({
name: "person",
initialState,
reducers: {
setToken: (state, action) => {
state.token = action.payload;
},
setUser: (state, action) => {
state = { ...state, ...action.payload };
},
},
});
Run Code Online (Sandbox Code Playgroud)
当我设置令牌时,我的应用程序会更新并且运行良好。但是在分派setUser动作之后,我依赖于person状态的组件没有被重新渲染。但是为什么当我设置令牌而不返回时它会起作用?
我把我的代码改成这样:
const personSlice = createSlice({
name: "person",
initialState,
reducers: {
setToken: (state, action) => {
state.token = action.payload;
},
setUser: (state, action) => {
return state = { ...state, ...action.payload }; …Run Code Online (Sandbox Code Playgroud)