Cocos2dx实现透视效果

开发中需要实现透视效果,自己将实现过程记录下:

创建demo并添加一个精灵到坐标原点:

    auto sprite = Sprite::create("HelloWorld.png");
    this->addChild(sprite, 0);
效果图:


添加Camera,设置初始参数:
    auto camera=Camera::createPerspective(60, visibleSize.width/visibleSize.height, 500, 0);
    //create时的参数根据API对参数的描述传入即可
    camera->setCameraFlag(CameraFlag::USER1);
    camera->setPosition3D(Vec3(0, 0,300));
    //设置相机位置
    camera->lookAt(Vec3(0, 0, 0),Vec3(0,1,0));
    //设置视点
    this->addChild(camera);
    sprite->setCameraMask(2);
    //因为2 & CameraFlag::USER1 !=0,所以cameraMask=2与CameraFlag::USER1匹配,sprite将使用上面创建的camera

效果:


调整camera的x坐标

camera->setPosition3D(Vec3(100, 0,300));

camera位置在x轴右侧,故看起来右大左小(右侧距离camera更近)

效果:



camera->setPosition3D(Vec3(-100, 0,300));

camera位置在x轴左侧,故看起来左大右小(左侧距离camera更近)



调整观察点,保持camera在z轴上:

    camera->setPosition3D(Vec3(0, 0,300));
    camera->lookAt(Vec3(100, 0, 0),Vec3(0,1,0));
观察目标物的参考点x坐标为正,故看起来是左大右小

camera->lookAt(Vec3(-100, 0, 0),Vec3(0,1,0));

观察目标物的参考点x坐标为负,故看起来是右大左小


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值