Jump to content

Controller Shape Offset


SpiderPig
 Share

Go to solution Solved by Josh,

Recommended Posts

Now I think this is a bug...  the cylinder falls and lands half way up.  It moves around fine.  I get it there's an offset of 0.5 but in this case I do not know how to fix it.  Modify the vertices?  Will that update the collider model too?  What shape is the player controller?  Is it not using the collider of the model I set PHYSICS_PLAYER on?

Seth Meyers Question GIF by Late Night with Seth Meyers

ControllerHalfWay.thumb.jpg.292d83bb874fe9797dc1daa85db06c51.jpg

#include "UltraEngine.h"

using namespace UltraEngine;

Vec3 mousepos = Vec3(0.0f);
float move_adjustment = 0.1f;
float move_speed = 1.0f;
float lookspeed = 0.1f;
float looksmoothing = 0.5f;
bool enable_camera = true;

int main(int argc, const char* argv[])
{
    auto displays = GetDisplays();
    auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR);
    auto world = CreateWorld();
    auto framebuffer = CreateFramebuffer(window);

    auto camera = CreateCamera(world);
    camera->SetClearColor(0.125);
    camera->SetFov(70);
    camera->SetPosition(0, 10, -5);

    auto light = CreateDirectionalLight(world);
    light->SetRotation(35, 45, 0);

    auto floor = CreateBox(world, 10.0f, 0.1f, 10.0f);
    floor->SetPosition(0.0f, -3.0f, 0.0f);
    floor->SetMaterial(LoadMaterial("Materials\\Developer\\bluegrid.mat"));

    auto box = CreateBox(world);
    box->SetMass(1.0f);
    box->SetPosition(2.0f, 2.0f, 0.0f);

    auto player = CreateCylinder(world);
    player->SetPhysicsMode(PHYSICS_PLAYER);
    player->SetPosition(0.0f, 5.0f, 0.0f);
    player->SetMass(10.0f);

    auto cam_pivot = CreatePivot(world);
    cam_pivot->SetParent(player);
    cam_pivot->SetPosition(0.0f, 1.8f, 0.0f);

    camera->SetParent(cam_pivot);
    camera->SetPosition(0.0f, 0.0f, -3.0f);
    camera->SetDebugPhysicsMode(true);

    bool stage = 0;
    while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false)
    {
        if (window->KeyHit(KEY_F2) == true) { camera->SetWireframe(!camera->GetWireframe()); }
        if (window->KeyHit(KEY_F3) == true) { camera->SetDebugPhysicsMode(!camera->GetDebugPhysicsMode()); }
        if (window->KeyHit(KEY_F4) == true) { enable_camera = !enable_camera; }

        if (enable_camera) {
            auto _displaySize = window->GetSize();
            float cx = Round((float)_displaySize.x / 2.0f);
            float cy = Round((float)_displaySize.y / 2.0f);

            auto mpos = Vec3(window->GetMousePosition().x, window->GetMousePosition().y, window->GetMousePosition().z);
            window->SetMousePosition(cx, cy);
            mpos = mpos * looksmoothing + mousepos * (1 - looksmoothing);
            auto dx = (mpos.x - cx) * lookspeed;
            auto dy = (mpos.y - cy) * lookspeed;


            auto camrot = cam_pivot->GetRotation();
            camrot.x += dy;
            camrot.y += dx;
            cam_pivot->SetRotation(camrot);
            mousepos = mpos;
        }

        auto y_angle = cam_pivot->GetRotation().y;
        auto move = 0.0f, strafe = 0.0f;
        if (window->KeyDown(KEY_W)) { move = 1.0f; }
        else if (window->KeyDown(KEY_S)) { move = -1.0f; }
        if (window->KeyDown(KEY_A)) { strafe = -1.0f; }
        else if (window->KeyDown(KEY_D)) { strafe = 1.0f; }
        player->SetInput(y_angle, move, strafe);

        world->Update();
        world->Render(framebuffer);
    }
    return 0;
}

 

Link to comment
Share on other sites

3 minutes ago, SpiderPig said:

Thanks.  Is the cylinder collider used as the controller's shape or is it something else that's currently invisible when debugging physics?

I guess the player collider is invisible. Well, it doesn't really use a regular collider, but I guess it would be nicer if it was shown anyways.

  • Upvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

  • Josh locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...