第四个例子讲述了曲线的作用 制作一些RoadPoint时 会用到 让一个图片对象按照曲线运行
代码如下GameApp.cpp:
#include <stdio.h>
#include <JGE.h>
#include <JRenderer.h>
#include <JLBFont.h>
#include <JSpline.h>
#include <JGameObject.h>
#include "GameApp.h"
GameApp::GameApp()
{
mFont = NULL;
mSpline = NULL;
mTexBg = NULL;
mTexPlane = NULL;
mBg = NULL;
mPlane = NULL;
}
GameApp::~GameApp()
{
}
void GameApp::Create()
{
mFont = new JLBFont("f3", 16, true);
mSpline = new JSpline(); // Load spline and scale it down a little bit because the
mSpline->Load("sample.spl", 0.60f, 0.56f); // spline was originally created for 800x600 size screen.
mSpline->GeneratePixels(); // Generate all the points on the spline.
//加载曲线 根据曲线文件加载 文件中定义了很多路点 自动通过GeneratePixels算出曲线每个点的值 需要缩放一下
JRenderer* renderer = JRenderer::GetInstance();
mTexBg = renderer->LoadTexture("bg.jpg");
mBg = new JQuad(mTexBg, 0, 0, SCREEN_WIDTH_F, SCREEN_HEIGHT_F);
mTexPlane = renderer->LoadTexture("sprites.png"); // Load the plane and set up the animation frames.
mPlane = new JGameObject(mTexPlane, 1, 1, 63, 63);//根据第一个图片位置设置第一个Frame
mPlane->AddFrame(1,65,63,63,1000);//中间的Frame
mPlane->AddFrame(1,129,63,63,3000);//最后的Frame
mPlane->SetHotSpot(32, 32);//设置中心
mPlane->SetRenderFlags(RENDER_FLAG_ANGLE); // Make the plane facing the direction it is moving to.
//使飞机可以旋转
mIndex = 0;
mCounter = 0.0;
Point pt;
mSpline->GetPixel(pt, mIndex);//获取第0-index点的坐标Point
mPlane->SetPosition(pt.x, pt.y);//设置飞机的坐标
mSpline->GetPixel(pt, mIndex+1);//获取下一个1-index点的坐标Point
mPlane->SetDirection(pt.x, pt.y);//设置方向为从0-index坐标指向1-index坐标
mShowSpline = false;//不显示曲线
}
void GameApp::Destroy()
{
SAFE_DELETE(mFont);
SAFE_DELETE(mSpline);
SAFE_DELETE(mTexBg);
SAFE_DELETE(mTexPlane);
SAFE_DELETE(mBg);
SAFE_DELETE(mPlane);
}
void GameApp::Update()
{
JGE* engine = JGE::GetInstance();
if (engine->GetButtonClick(PSP_CTRL_TRIANGLE)) // do a screen shot when the TRIANGLE button is pressed
{
char s[80];
sprintf(s, "ms0:/screenshot.png");
JRenderer::GetInstance()->ScreenShot(s);
}
if (engine->GetButtonClick(PSP_CTRL_CROSS)) // exit when the CROSS button is pressed
{
engine->End();
return;
}
if (engine->GetButtonClick(PSP_CTRL_CIRCLE))
{
mShowSpline = !mShowSpline;
}
float dt = engine->GetDelta();//获取引擎运行的时间Delta
mPlane->Update(dt);//将飞机更新到Delta时间应该显示的图片
mCounter += 100*dt;//根据运行的时间来设置当前应该显示的位置 根据执行频率*100 比如1毫秒刷新一次 则略过0.1个index
int curr = (int) mCounter;
if (mIndex != curr) // Update position of the plane
{
if (curr >= mSpline->GetPixelCount())//如果当前的运行次数>了整个曲线的index点的次数 回到起始点
{
mCounter = 0.0f;
curr = 0;
}
mIndex = curr;//赋当前的index位置的值
Point pt;
mSpline->GetPixel(pt, mIndex);//取得index所在的点
mPlane->SetPosition(pt.x, pt.y);//设置飞机
mSpline->GetPixel(pt, mIndex+1);//取得index+1的点
mPlane->SetDirection(pt.x, pt.y);//从index指向index+1的方向
}
//Update方式是不断循环来执行 无限循环 直到按了叉键
}
void GameApp::Render()
{
JRenderer* renderer = JRenderer::GetInstance();
renderer->RenderQuad(mBg, 0, 0);
mFont->SetColor(ARGB(255,255,255,255));
mFont->DrawString("Press O to show spline", 5.0f, 130.0f, JGETEXT_LEFT);
if (mShowSpline)
mSpline->Render(0, 0);//封装了整个绘制曲线的方法Render一下
mPlane->Render();//Render一下飞机 飞机的Sprite方法好像有问题 不能动态显示当前祯 这几个例子都有点小问题 质量不高= =!
Sleep(1);
}
void GameApp::Pause()
{
}
void GameApp::Resume()
{
}
分享到:
相关推荐
《T-Splines 3.2:Rhino插件的深度解析及应用指南》 T-Splines是一款在计算机辅助设计(CAD)领域备受推崇的插件,特别针对Rhino软件进行开发,以提升NURBS(非均匀有理B样条)建模的效率与灵活性。版本3.2是其一个...
"ebertolazzi-Splines-b4666f1"可能是一个特定的样条库项目,由Erbetolazzi开发,并在某个版本(b4666f1)下进行了更新。这个库可能包含了实现样条函数的各种函数,以及C/C++源代码,通过MEX接口供MATLAB使用。使用...
在游戏开发和3D场景设计中,曲线系统扮演着至关重要的角色,它们能够为游戏世界增添动态美感,实现复杂的运动轨迹和流畅的动画效果。Curvy Splines是一款专为Unity3D设计的曲线插件,其最新版本v6.0.1为用户提供了...
无论是游戏开发、动画制作还是建筑可视化,Curvy Splines 都能发挥出惊人的作用。 其核心优势在于能够轻松创建出优美而流畅的曲线。这些曲线并非生硬的几何形状,而是充满了生命力和动感。通过 Curvy Splines,设计...
Unity 插件-Curvy Splines 8 8.7.3 最新版本!!!!! 它功能强大且多用途。这个工具可以用于各种任务,如物体移动、放置、变形、生成等。它具有很好的文档记录,易于扩展,自2013年以来一直获得5星评价,并提供...
一、Dreamteck Splines核心功能解析 1. **灵活的曲线编辑**:Dreamteck Splines允许用户通过直观的界面创建和编辑贝塞尔曲线。用户可以添加、移动、旋转和缩放控制点,以达到所需的形状和路径。此外,曲线支持自由...
8、程序原语和预设保存 9、导入和导出功能 10、变形状态 11、多线程 12、易于扩展的功能 13、广泛的API文档和用户手册。 Dreamteck Splines是unity任何游戏的终极样条解决方案,只需点击几下,即可创建和编辑样条线...
Dreamteck Splines 是一款经过实战测试的产品,数百名开发人员在制作各种游戏时都使用了该产品。我们会对它持续改进,并且每月都发布新版本。Dreamteck Splines 提供了大量高度可配置的工具和组件,可在运行时和编辑...
T-Splines是犀牛(rhino)的插件之一,主要功能是基于多边形实现建模操作,可用于生物、动物等有机体建模。这里小编给大家带来汉化版的T Splines,用起来更方便、简单。需要的朋友试试吧! T-Splines 4.0 功能特点小编...
T-splines, 作为NURBS细分形式补充的新建模方式, 是由T-Splines公司领导开发的一种全新建模技术,它结合了Nurbs和细分表面建模技术的特点,虽然和Nurbs很相似,不过它极大地减少了模型表面上的控制点数目,可以进行...
在游戏开发和3D可视化设计中,曲线插值是一种常见的技术,它用于创建平滑连续的路径,广泛应用于角色动画、场景布局、游戏物体运动轨迹等方面。Curvy Splines是一款专为Unity引擎设计的插件,其最新版本7.1.4提供了...
描述中的“插件”一词表明 T-Splines 是为 Rhino 添加新功能的程序模块,让设计师能够利用更先进的建模方法,特别是在设计曲线和曲面时,能更好地处理复杂的几何形状和有机形态。 标签 "rhino 插件" 明确了 T-...
Unity 插件Curvy Splines v6.1.0
适合于任何游戏的终极样条图解决方案。...Dreamteck Splines 是一套高效,...- 程序化基元和预设保存 - 交汇 - 导入和导出功能 - 变形状态 - 多线程 - 轻松可扩展的功能 - 大量 API 文档和用户手册。 Dreamteck Splines
Curvy Splines 8 v8.9.0.unitypackage
《Curvy Splines:在Unity中的曲线路径设计与应用》 Curvy Splines是一个专为Unity游戏引擎设计的插件,版本7.1.40,它提供了强大的曲线路径创建和编辑工具,使得开发者能够在3D空间中轻松构建出复杂的曲线路径。这...
Curvy Splines 7.1.5.unitypackage
总的来说,"Curvy Splines"是Unity开发中一个强大的工具,它使得路径规划和对象移动变得更加简单,有助于提升开发效率,让开发者能够更专注于游戏的创意和体验设计。无论是初学者还是经验丰富的开发者,都能从中受益...