Unity实现摄像机向屏幕中间发射射线射击物体

这篇具有很好参考价值的文章主要介绍了Unity实现摄像机向屏幕中间发射射线射击物体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.创建一个准星放在屏幕中间

外部找个PNG透明图,拖到Unity文件夹,右上角改成精灵sprite2d

Unity实现摄像机向屏幕中间发射射线射击物体,Unity零基础课程,unity,游戏引擎

2.添加到UI画布

Unity实现摄像机向屏幕中间发射射线射击物体,Unity零基础课程,unity,游戏引擎

Unity实现摄像机向屏幕中间发射射线射击物体,Unity零基础课程,unity,游戏引擎 

3.写脚本

首先,我们需要引入一些 "工具",就像我们在玩游戏时要先下载游戏客户端一样。这里的 "工具" 就是一些命名空间,让我们可以方便地使用 System 和 UnityEngine 类。 🔧

接下来,我们创建了一个名为 RayToScreenMid 的 "小玩具"。这个小玩具有一个重要的 "成员"(在程序中,我们称之为变量),那就是 MianCamera。MianCamera 就是我们的 "摄像头",用来观察游戏世界。我们在玩具的 "启动" 阶段(Start 方法)计算了一下屏幕的 "中心位置",并把结果存放在 ScreenMidPos 变量里。 📝

当我们 "玩"(Update 方法)这个小玩具时,如果鼠标左键被按下,RayShot 方法就会被调用。RayShot 方法就像我们在玩游戏时按下的 "射击" 键,它会从 MianCamera(摄像头)出发,向屏幕中间发射一条 "射线"(Ray)。 🎯

然后,我们使用 Physics.Raycast 方法来检查这条射线是否与游戏中的其他物体 "相撞" 了。如果相撞,我们会检查这个物体是不是 "地形" 或者 "角色",如果不是,我们就会 "消灭"(Destroy)这个物体。 🚀

此外,我们还会在游戏中画出一条从 MianCamera(摄像头)到屏幕中间位置的红色射线。这样,我们就可以清楚地看到这条射线,就像我们在玩游戏时看到的 "血条" 一样。 🎭

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RayToScreenMid : MonoBehaviour
{
    // 从视角摄像机向屏幕中间发射射线

    Camera MianCamera;                // 这是一个摄像机对象
    Vector3 ScreenMidPos;             // 这是屏幕中央的点的坐标

    private void Start()
    {
        ScreenMidPos = new Vector3(Screen.width / 2, Screen.height / 2, 0);  // 初始化屏幕中央的点的坐标
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RayShot();              // 如果鼠标左键按下,则发射一条射线
        }
    }

    private void RayShot()
    {
        //从摄像机出发向屏幕中间发射射线!    
        Ray OneShotRay = Camera.main.ScreenPointToRay(ScreenMidPos);          // 以屏幕中央点为原点,发射射线
        RaycastHit OnEnemy;
        if (Physics.Raycast(OneShotRay,out OnEnemy))                          // 如果射线碰到了物体
        {
            Debug.Log("射线发射成功");
            if (OnEnemy.transform.name!= "Terrain"&& OnEnemy.transform.name != "Role")  // 如果碰到的不是地形和角色
            {
                Destroy(OnEnemy.transform.gameObject);                        // 销毁碰撞到的物体
                Debug.Log("销毁对方");
                if (ScreenMidPos != null)
                {
                    Debug.DrawLine(Camera.main.transform.position, ScreenMidPos, Color.red, 10000f);    // 画一条从摄像机出发,到屏幕中央点的射线
                }
               
        }
    }
 
}//end class

这个脚本挂载到哪里都可以,为了符合面向对象,请挂在摄像机或者主角身上

这个脚本是从摄像机往电脑屏幕中间发射射线!前面的UI仅仅只是一个标识!

Unity实现摄像机向屏幕中间发射射线射击物体,Unity零基础课程,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-714005.html

到了这里,关于Unity实现摄像机向屏幕中间发射射线射击物体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity控制摄像机几种视角实现方式

    目录 1、按下鼠标右键可以实现摄像机上下左右旋转 2、自由视角 3、摄像头跟随视角 4、跟随自由视角 5、第一人称跟随视角 python学习汇总连接: 1、按下鼠标右键可以实现摄像机上下左右旋转 这段代码定义了一个名为CameraRotate的脚本,用于控制摄像机根据鼠标右键(中键)

    2024年03月12日
    浏览(47)
  • Unity使用Cinemachine插件实现摄像机跟随和震动

     一、实现跟随 1、在PackageManager添加插件 2、创建Cinemachine的摄像机,我的项目是2D项目所以创建2D摄像机 3、将Player拖拽到Follow和LookAt  4、创建一个空物体,向它添加PolygonCollider2D,调整好可视范围的大小以后在CinemachineVirtuaCamera的Extensions的AddExtensionzhong中选择 把刚才创建的空

    2024年02月15日
    浏览(49)
  • unity3d 实现第三人称移动与摄像机调整

    首先展示效果 unity3d 关于人物移动,这里推荐使用Character Conrroller组件,优点就是可以不用处理刚体,不受重力的影响,自带物理碰撞检测。  人物移动代码包括转向 接下来就是摄影机的调整,这里使用unity自带的插件cinemachine,非常的推荐,无需使用冗杂的代码即可设计较好

    2024年02月11日
    浏览(50)
  • 【Unity 摄像机组件】Camera场景摄像机的认识

    OK 同学们好,本节课我们开始学习摄像机创建以及摄像机的属性。 CH3.3 PPT02 摄像机相机是玩家用来观看游戏场景世界的基本设备,当游戏运行的时候,游戏画面就是摄像机看到的画面。 PPT 3一个场景中可以有无数个摄像机,最终游戏运行的画面可能是很多个摄像机拼凑而成。

    2024年02月02日
    浏览(55)
  • Unity【角色/摄像机移动控制】【3.摄像机跟随角色】

    本章代码基于前两章。 1. 我们新建CameraController脚本,将其挂载到Camera上 2. 在角色Player下新建一个空物体,命名为cameraTargetPoint,并将该物体挂载至CameraController脚本中【注意代码中的这行:public Transform cameraTargetPoint;】,将该空物体放在人物头部附近位置 3.将PlayerController脚本

    2024年02月22日
    浏览(52)
  • unity 3种办法实现血条效果并实现3d世界血条一直看向摄像机

    普通血条栏: 渐变色血条栏: 缓冲血条栏: 3D场景血条栏跟随玩家移动: 在Canvas下创建一个空物体HP bar,在空物体下方创建3个Image,分别为血条框bar 黑色,最大HP maxHP 白色,和当前HP currentHP 红色。(PS:注意先后顺序以调整显示的图层) 效果: 点击HP bar,添加slider(滑块)

    2024年02月11日
    浏览(53)
  • Unity摄像机跟随

    将摄像机直接拖拽到被跟随的目标下面即可,这样摄像机永远在目标的后面 缺点: 屏幕旋转太平滑了 目标物体在屏幕上的位置永远不变 目标物体被销毁时总不能把摄像机也销毁了吧 先相机坐标和物体坐标做差,求得偏移量,在之后的每一帧里,将偏移量加上物体的坐标。

    2024年02月21日
    浏览(54)
  • Unity 摄像机

    摄像机分为两种  (1)透视摄像机 (2) 正交摄像机  一般3D游戏使用的透视多一点,2D游戏使用正交多一点。 相机参数 清除标记: (1)天空盒 (2)仅深度,类似于权重,优先级,深度大的覆盖住深度小的视线 例如 主相机显示的却不是当先视线,而是新相机的视线 ,主

    2023年04月21日
    浏览(47)
  • unity Camera(摄像机)介绍

    目录 一.摄像机类型 1.Perspective (透视摄像机) 2.Orthographic(正交摄像机) 二.摄像机属性 1.Clear Flags 2.Background 背景色 3.Culling Mask 剔除遮罩 4.Projection 投影 5.Field Of View   视野范围 6.Size 大小 7.Clipping Planes 裁剪屏幕 8.Viewport Rect 标准视图矩形 9.Depth 深度 10.Rendering Path 渲染路径

    2024年02月01日
    浏览(43)
  • unity摄像机平滑移动旋转

    Unity中使用Vector3.SmoothDamp(平滑阻尼)方法进行跟随移动,可以使跟随看起来很平滑,而不显得突兀,最典型的示例就是相机平滑跟随角色移动。 SmoothDamp (current : Vector3, target : Vector3, ref currentVelocity : Vector3, smoothTime )  

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包