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控制摄像机几种视角实现方式

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

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

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

    Unity使用Cinemachine插件实现摄像机跟随和震动

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

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

    unity3d 实现第三人称移动与摄像机调整

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

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

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

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

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

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

    unity 3种办法实现血条效果并实现3d世界血条一直看向摄像机

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

    2024年02月11日
    浏览(58)
  • Unity 摄像机

    Unity 摄像机

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

    2023年04月21日
    浏览(11)
  • Unity摄像机跟随

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

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

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

    2024年02月11日
    浏览(15)
  • unity摄像机跟随鼠标旋转

     float vertical = Input.GetAxis(\\\"Mouse X\\\") float horizontal = Input.GetAxis(\\\"Mouse Y\\\") 第二种 通过 计算坐标时只需要通过 Quaternion.Euler 来取得旋转四元数,以玩家为原点衍生一条(0,0,-1)的向量并乘上四元数以旋转至 Player 指向摄像机的方向,最后乘上 Distance ,即可得到摄像机相对玩家的偏移

    2024年02月11日
    浏览(20)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包