Jump to content

ErhanK

Members
  • Posts

    61
  • Joined

  • Last visited

Posts posted by ErhanK

  1. Hi, I have a few questions. I am using C ++.

    1) For example, I have a derived entity class, and I have a derived actor class attached to this class. Pickinfo gives me an entity when the bullet hits this class. I can also access the atached actor with pickinfo.entity.GetActor (). But since it doesn't give me the class and actor I've derived, I can't call the giveHurt () function in them.

    2) In the documentation, the ForEachEntityInAABBDo function can be called in main (). There is no problem. But I can't call the callback function of a class. Should I use a function pointer?

    world-> ForEachEntityInAABBDo(aabb, &MyClass::Callback, v); it does not work. Also I cannot call the callback function with a string.

    I need to solve these problems so that I can continue to improve my game. I can't get enough help from the forum. I will be glad if you help me.

  2. this code solved the problem

    // tmpX and tmpY are global
    
        float x = 0;
    	x = mouseDifference.y / mouseSensitivity;
    
    	tmpX += x;
    	if (tmpX > 20) {
    		tmpX = 20;
    	}
    	else if (tmpX < -20) {
    		tmpX = -20;
    	}
    
    	float y = 0;
    	y = mouseDifference.x / mouseSensitivity;
    
    	tmpY += y;
    	if (tmpY > 60) {
    		tmpY = 60;
    	}
    	else if (tmpY < -60) {
    		tmpY = -60;
    	}
    
    //CONVERT TO VECTOR
    	Vec2 wpnRot;
    	wpnRot.x = tmpX;
    	wpnRot.y = tmpY;
    	
    // SMOOTING
    	smoothWeaponViewRot.x = Math::Curve(wpnRot.x, smoothedHurtOffset.x, 5);
    	smoothWeaponViewRot.y = Math::Curve(wpnRot.y, smoothedHurtOffset.x, 5);
    //THEN
    	testWeapon->entity->SetRotation(camRotation); //PLAYER ROTATION
    	testWeapon->entity->Turn(smoothWeaponViewRot); //WEAPON VIEW ROTATION
    
    //now the weapon can navigate within the boundaries of the player's angle of view, according to the movement of the mouse.

     

  3. Hi. I would like to make the rotation of the gun at -45 and +45 (or less) degrees relative to that of the camera. When I limit the values, it only works according to the world coordinate. For example, when I turn a full turn to the left, I have to turn a full turn right again so that the gun rotates in the right direction. I want to do a gun control like Insurgency game. How can I fix this? Here is my code.

    float currentTime = Time::GetCurrent();
    	Vec2 currentMousePos = Window::GetCurrent()->GetMousePosition();
    	Window::GetCurrent()->SetMousePosition(Math::Round(Context::GetCurrent()->GetWidth() / 2), Math::Round(Context::GetCurrent()->GetHeight() / 2));
    	Vec2 centerPos = Window::GetCurrent()->GetMousePosition();
    
    	currentMousePos.x = Math::Round(currentMousePos.x);
    	currentMousePos.y = Math::Round(currentMousePos.y);
    
    	mouseDifference.x = Math::Curve(currentMousePos.x - centerPos.x, mouseDifference.x, 2 / Time::GetSpeed());
    	mouseDifference.y = Math::Curve(currentMousePos.y - centerPos.y, mouseDifference.y, 2 / Time::GetSpeed());
    
    	camRotation.x = Math::Clamp(camRotation.x + mouseDifference.y / mouseSensitivity, -90, 90);
    	camRotation.y = camRotation.y + (mouseDifference.x / mouseSensitivity);
    
    	hurtOffset.x = Math::Inc(0, hurtOffset.x, 2 * Time::GetSpeed());
    	hurtOffset.y = Math::Inc(0, hurtOffset.y, 2 * Time::GetSpeed());
    
    	smoothedHurtOffset.x = Math::Curve(hurtOffset.x, smoothedHurtOffset.x, 3);
    	smoothedHurtOffset.y = Math::Curve(hurtOffset.y, smoothedHurtOffset.y, 3);
    
    	bobOffset.x = Math::Inc(0, bobOffset.x, Time::GetSpeed() * 0.8f);
    	bobOffset.y = Math::Inc(0, bobOffset.y, Time::GetSpeed());
    
    	smoothedBobOffset.x = Math::Curve(bobOffset.x, smoothedBobOffset.x, 25);
    	smoothedBobOffset.y = Math::Curve(bobOffset.y, smoothedBobOffset.y, 25);
    
    	weaponViewRot.x = Math::Clamp(camRotation.x + mouseDifference.y / mouseSensitivity, -45, 45);
    	weaponViewRot.y = Math::Clamp(camRotation.y + mouseDifference.x / mouseSensitivity, -45, 45);
    
    	smoothWeaponViewRot.x = Math::Curve(weaponViewRot.x, smoothedHurtOffset.x, 5);
    	smoothWeaponViewRot.y = Math::Curve(weaponViewRot.y, smoothedHurtOffset.x, 5);
    
    	playerCamera->SetRotation(camRotation + smoothedBobOffset + smoothedHurtOffset);
    	testWeapon->entity->SetRotation(camRotation + smoothWeaponViewRot);
    	
    	
    	if (Window::GetCurrent()->MouseDown(1)) {
    		testWeapon->weaponShoot();
    	}

     

     

     

  4. Hi. I want to load the player entity position from an object in the editor. It works very well but; I want to spawn in the center of the scene when there is no object named "info_player_start". When I remove the comment lines, it always spawns at the center of the scene. I don't understand why. Here is my code...

    #include "Game.h"
    
    Game::Game()
    {
    	loadMap();
    	loadEntities();
    	player = new Player(playerStartPosition);
    }
    
    Game::~Game()
    {
    	delete player;
    }
    
    void Game::loadMap()
    {
    	std::string mapname = System::GetProperty("map", "Maps/start.map");
    	if (!Map::Load(mapname)) Debug::Error("Failed to load map \"" + mapname + "\".");
    }
    
    void Game::loadEntities()
    {
    	for (const auto e : World::GetCurrent()->entities) 
    	{
    		if (e->GetKeyValue("name") == "info_player_start") {
    			playerStartPosition = e->GetPosition();
    		}
    		/*else {
    			playerStartPosition = Vec3(0.0f, 0.0f, 0.0f);
    		}*/
    	}
    }
    
    void Game::Update()
    {
    	player->Update();
    }

     

    Capture.PNG

  5. Hi, I have a question. How can I use "PostRender" in c++ for drawing a rectangle like this lua script? I did but, screen is flickering. I think this is must be in PostRender

    --This function will be called after the world is rendered, before the screen is refreshed.
    --Use this to perform any 2D drawing you want the entity to display.
    function Script:PostRender(context)
    	local window = context:GetWindow()
    
    	context:SetBlendMode(Blend.Alpha)
    	--draw selection rectangle
    	if ( self.beginSelectPos ~= nil and self.endSelectPos ~= nil ) then
    		
    		context:SetColor(1,0,0,0.5)
        	context:DrawRect(self.beginSelectPos.x, self.beginSelectPos.y, self.endSelectPos.x-self.beginSelectPos.x, self.endSelectPos.y-self.beginSelectPos.y)
        	context:SetColor(0,0,0,0)
    	end
      
      

     

×
×
  • Create New...