小编Jea*_*ley的帖子

碰撞检测在Unity 2D中不起作用

我有两个2D游戏对象.它们每个都有一个Box Collider 2D和一个不是运动学的刚体2D.当游戏进行时,一个人向另一个移动并与之相撞.

但是,我在移动GameObject中也有以下方法:

void OnCollisionEnter(Collision collision) 
{
    print( "Collided with someone" );
}
Run Code Online (Sandbox Code Playgroud)

print语句永远不会打印,因此可能从未调用过该方法.我哪里错了?

c# unity-game-engine

12
推荐指数
1
解决办法
3万
查看次数

C++ - 在派生类上使用的typeid()不返回正确的类型

也许我误解了继承如何在这里工作,但这是我的问题:

我有一个类Option,以及一个派生自它的类RoomOption.我有另一个课室,里面有一个shared_ptrs的矢量.在主要内容中,我向该向量添加了一个RoomOption.然后,使用typeid()我检查类型,它告诉我它的选项.根据我的阅读,typeid应该返回派生类型,而shared_ptrs不会导致切片,所以我不确定我做错了什么.

这是代码:

Room.h:

vector<shared_ptr<Option> > options;
void addOption(shared_ptr<Option>);
shared_ptr<Option> getOption(int);
Run Code Online (Sandbox Code Playgroud)

Room.cpp:

void Room::addOption(shared_ptr<Option> option){
    options.push_back(option);
}

shared_ptr<Option> Room::getOption(int i){
    return options[i];
}
Run Code Online (Sandbox Code Playgroud)

主要:

shared_ptr<Room> outside(new Room(0, "", ""));
outside->addOption(shared_ptr<RoomOption>(new RoomOption(0, "Go inside", hallway)));
cout<<typeid(player->getRoom()->getOption(0)).name().get()<<endl; 
//This line prints "class std::tr1::shared_ptr<class Option>
Run Code Online (Sandbox Code Playgroud)

在我看来,可能在添加或获取选项时,由于返回/参数类型,RoomOption被转换为选项.如果是这种情况那么我应该如何存储多种类型的矢量?或者我错了吗?= \

c++ inheritance typeid

8
推荐指数
2
解决办法
2万
查看次数

用增强现实映射GPS点

我正在尝试使用增强现实制作一个在相机上显示GPS点的Windows Phone应用程序.我一直在寻找在线教程,但我找不到任何解释如何做的地方.我想知道是否有人知道任何解释将AR与GPS相结合的好教程,或者是否有人可以给我任何关于从哪里开始的提示(我不希望有详细的解释或任何内容).即使是关于如何使用Android的教程也是一个开始.

gps augmented-reality windows-phone-7

5
推荐指数
1
解决办法
3886
查看次数

C++通过引用传递给类中的指针

所以,我有一个类存储指向对象的指针.我有一个方法,可以向对象添加对象.添加时,我知道我可以通过引用或指针传递,并阅读了每个的优点和缺点,但在这种情况下,我无法弄清楚哪一个更好,为什么.对于我可以弄清楚的一切,他们几乎是一样的(但我可能错了!)

这是(一个释义)传递指针/地址:

hpp:
class Room {
    vector<Item*> items;
public:
    void addItem(Item*);
};

cpp:
void Room :: addItem(Item* item) {
    items.push_back(item);
}
Run Code Online (Sandbox Code Playgroud)

......并通过引用传递:

hpp:
class Room {
    vector<Item*> items;
public:
    void addItem(Item &);
};

cpp:
void Room :: addItem(Item &item) {
    items.push_back(&item);
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个?

c++

3
推荐指数
1
解决办法
1347
查看次数

C++ - 释放在main中分配但在单独的类中指向的内存

我想知道,如果我使用new关键字在main中创建一个对象,然后将该对象(指针)设置为由另一个类的成员指向,将原始指针设置为null,我将在哪里删除已分配的内存?我可以在第二个类的析构函数中做到这一点,但如果该对象没有动态分配怎么办?

一些代码作为例子:

World world;
Player* newPlayer = new Player("Ted");
world.setPlayer(newPlayer);
newPlayer = 0;
Run Code Online (Sandbox Code Playgroud)

所以现在World中的'player'成员变量指向newPlayer分配的内存,newPlayer指向null.当我完成World对象时,我应该如何释放这个内存?

c++ memory-management

0
推荐指数
1
解决办法
95
查看次数

C++ - 将auto_ptrs放在shared_ptr向量中

我有一个shared_ptrs的向量.我正在把auto_ptrs放进去.这没关系还是事情会破裂?

Room.hpp:

vector<shared_ptr<Item>> items;
void addItem(auto_ptr<Item>);
Run Code Online (Sandbox Code Playgroud)

主要:

room.addItem(auto_ptr<Item>(new Item(...)));
Run Code Online (Sandbox Code Playgroud)

c++ memory-management smart-pointers

0
推荐指数
1
解决办法
138
查看次数

使用std :: vector时访问冲突

我收到以下错误:

  • TBG.exe中0x012a4bd9处的未处理异常:0xC0000005:访问冲突读取位置0x0000002c.

指向vector.h的size()方法.使用此方法时似乎会发生:

void Player::printInventory(){
    if(inventory.size() != 0){
        for(unsigned int i=0; i<inventory.size(); i++){
            cout<<inventory[i] << endl;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

完整代码:

Player.h:

#pragma once
#include <vector>
#include <memory>

using namespace std;

class Player
{
private:
    int health;
    string name;
    vector<int> inventory;

public:
    Player(void);
    Player(string);
    ~Player(void);
    void changeHealth(int);
    void addToInventory(int);
    void removeFromInventory(int);
    void printInventory();
};
Run Code Online (Sandbox Code Playgroud)

Player.cpp:

#include "Player.h"
#include <iostream>
#include <string.h>

Player::Player(void)
{
    health = 20;
}

Player::Player(string newName)
{
    name = newName;
    health = 20;
}

Player::~Player(void)
{
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector

0
推荐指数
1
解决办法
3593
查看次数