首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在“统一”中用等距相机对齐光线投射和鼠标?

如何在“统一”中用等距相机对齐光线投射和鼠标?
EN

Stack Overflow用户
提问于 2019-11-14 14:56:02
回答 1查看 781关注 0票数 2

当鼠标不居中时,我很难弄清楚如何弥补鼠标位置的偏移量。在统一相机是角(30,45,0),是正交的。参见图像作为一个例子。

我想在光线投射的位置画一个十字线,但这仍然会使目标变得棘手。

用于linerenderer代码的Raycast:

代码语言:javascript
运行
复制
void Shoot ()
 {
     timer = 0f;

     gunAudio.Play ();

     gunLight.enabled = true;

     gunParticles.Stop ();
     gunParticles.Play ();

     gunLine.enabled = true;
     gunLine.SetPosition (0, transform.position);

     shootRay.origin = transform.position;
     shootRay.direction = transform.forward;

     if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
     {
         EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth>();

         if(enemyHealth != null)
         {
             enemyHealth.TakeDamage (damagePerShot, shootHit.point);
         }
         gunLine.SetPosition (1, shootHit.point);
     }
     else
     {
         gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);
     }
 }

用于旋转播放器的Raycast:

代码语言:javascript
运行
复制
void Turning()
 {
     Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);

     RaycastHit floorHit;

     if (Physics.Raycast(camRay, out floorHit, camRayLength, floorMask))
     {
         Vector3 playerToMouse = new Vector3(floorHit.point.x, transform.position.y, floorHit.point.z);
         transform.LookAt(playerToMouse);
     }
 }
EN

回答 1

Stack Overflow用户

发布于 2019-11-14 15:05:56

在我看来,这位球员似乎是被轮回的。

对于LineRenderer /射击射线广播来说,你并不是在检查是否撞到了地板上的敌人。所以在else块中,您可以这样做

代码语言:javascript
运行
复制
gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);

在给定的方向上将光线延续到“永恒”(或range)。你也应该在这里添加地板到floorMask,所以你的光线也击中地板。

或者,您可以使用以下方法组合图层值

代码语言:javascript
运行
复制
 if(Physics.Raycast (shootRay, out shootHit, range, shootableMask | floorMask))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58859694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档