游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1626|回复: 0

VC+TV3d高手请进(mousepicking问题)

[复制链接]

11

主题

145

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2006-8-7 23:17:00 | 显示全部楼层 |阅读模式

研究TV一段时间了,试着把VB的例子用VC SDK改写,写到collisionresult时被卡住了,现将此问题复制到多个相关游戏论坛,希望用VC+TV的高手和前辈们帮助,若问题能得以解决,本人将不胜感激。
//code

ITVCollisionResult col1;
      ............
col1=CreateTVCollisionResult();
      ............
   col1=pScene->MousePicking(mouxxx,mousey,TV_COLLIDE_MESH,TV_TESTTYPE_BOUNDINGBOX);
   if(col1->IsCollision())
   {
         .................      
   }
编译尽管正确,但执行时发生实时错误,不知道问题在哪里。
于是查了很多国外的论坛,上面也有许多人提出同样问题,给出的答案一般有两种,
第一种是:用指针,于是改进程序如下:
ITVCollisionResult col1;
      ............
col1=CreateTVCollisionResult();
      ............
//输入的函数中:
   *col1=*pScene->MousePicking(mouxxx,mousey,TV_COLLIDE_MESH,TV_TESTTYPE_BOUNDINGBOX);
   if(col1->IsCollision())
   {
         .................      
   }

执行,倒是不出实时错误了,但是就是点击物体一点反映都没有,于是又写了如下版本:
ITVCollisionResult *col1;
col1=new  ITVCollisionResult;
  col1=&pScene->MousePicking(mouxxx,mousey,TV_COLLIDE_MESH,TV_TESTTYPE_BOUNDINGBOX);
   if((*col1)->IsCollision())
   {
         .................      
   }
还是点击起来一点反应没有。
以上三个例子如果把判断部分改为:
if((... ->IsCollision)
   {
         .................      
  }

还是可以执行,但是就是不管点击中与否都有反应。



综上所述,在使用....->IsCollision()时,其值始终为false;
而使用....->iscollision时,其值始终为true.
因此可以判断col1无论是否为指针都未其到起作用。
毛了,抛弃collisionresult,直接使用
if(pScene->MousePicking(mousex,mousey,TV_COLLIDE_PHYSICOBJECT,TV_TESTTYPE_ACCURATETESTING))
{....}
结果还是跟上面一样,无法正确的判断出是否被鼠标点中。
所以,到目前为止,已经不知道怎么样的才是正确的了,看来VB一句话就能搞定的到了VC中一涉及指针简直就十分难了,希望能得研究过这方面的高手指点一二。另外还想问个菜鸟问题,就是HL是用tv3d做的吗?还是到了CS1.6才用的TV3D引擎呢?怎么看HL的源代码里面没有使用任何TV3D的类呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 02:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表