unity射击小游戏,第一人称摄像机实现

unity射击小游戏,第一人称摄像机实现

unity射击小游戏,第一人称摄像机实现

今天开始写一些unity的小教程,就以刚刚写的第一人称的射击小游戏作为案例。

先上效果图:
在这里插入图片描述
在这里插入图片描述
首先游戏物品也没有多少东西,就是地板,平行光,主摄像机。然后我们需要做一个子弹,这个子弹里面添加刚体。然后把它作为预设体保存。

生成fire.cs文件。

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

public class fire : MonoBehaviour
{
   
    public int speed =5;
    public GameObject newObject; 
    // Start is called before the first frame update
    void Start()
    {
   
        
    }

    // Update is called once per frame
    void Update()
    {
   
        float z= Input.GetAxis("Vertical") * speed*Time.deltaTime;
        float x= Input.GetAxis("Horizontal") * speed *Time.deltaTime;

        transform.Translate(x, 0, z);

	    if(Input.GetButtonDown("Fire1"))
	    {
   
		    GameObject n = Instantiate(newObject,transform.position,transform.rotation);
		    Vector3 fwd;
		    fwd = transform.TransformDirection(Vector3.forward);
		    n.GetComponent<Rigidbody>().AddForce(fwd*6000);
            Destroy(n, 5);
	    }

        if (Input.GetKey(KeyCode.Q))
        {
   
            transform.Rotate(0, -50 * Time.deltaTime, 0);
            
        }
        if (Input.GetKey(KeyCode.E))
        {
   
            transform.Rotate(0, 50 * Time.deltaTime, 0);
        }

        if (Input.GetKey(KeyCode.Z))
        {
   
            transform.Rotate(-50 * Time.deltaTime, 0, 0);

        }
        if (Input.GetKey(KeyCode.C))
        {
   
            transform.Rotate(50 * Time.deltaTime, 0, 0);
        }
    }
}

这份代码直接挂在摄像机上面。newObject就是放入刚刚保存的预设体子弹就行了。

代码解析:

  float z= Input.GetAxis("Vertical") * speed*Time.deltaTime;
    float x= Input.GetAxis("Horizontal") * speed *Time.deltaTime;

这里是管摄像头,也就是第一人称上下左右移动的。

if(Input.GetButtonDown("Fire1"))
	    {
   
		    GameObject n = Instantiate(newObject,transform.position,transform.rotation);
		    Vector3 fwd;
		    fwd = transform.TransformDirection(Vector3.forward);
		    n.GetComponent<Rigidbody>().AddForce(fwd*6000);
            Destroy(n, 5);
	    }

这里管开火键,也就是鼠标左键。
仔细看这里的代码。这是预设体生成,也就是你们想要用代码动态生成物品,就要学习这部分代码。并且生成的子弹添加了一个向前的力,让它飞出去。

 if (Input.GetKey(KeyCode.Q))
        {
   
            transform.Rotate(0, -50 * Time.deltaTime, 0);
            
        }

剩下这部分代码也就是管键盘事件。键盘按键输入,然后控制摄像机旋转,达到镜头左右上下转动的效果。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2855.html原文链接:https://javaforall.net

(0)
上一篇 2021年3月12日 下午10:52
下一篇 2021年3月12日 下午11:11


相关推荐

  • springboot 406错误 produces(springboot下载)

    Springboot406错误简单的写了一个接口,然后406了。。。。publicclassTestController{@GetMapping(“/testGet/{message}”)publicResulttestGet(@PathVariableStringmessage){returnResult.success(message);}}Resolved[org.springframework.web.HttpMedi

    2022年4月12日
    51
  • java视频上传与播放功能

    java视频上传与播放功能参考:https://wenku.baidu.com/view/63fb1da364ce0508763231126edb6f1aff0071c7.html此次上传播放功能采用eclipse+ssm+maven+spring2.5+tomcat8+jdk8这个功能是有一定缺陷的,CKplayer播放视频需要H264MP4格式的,所以需要格式转化,网盘上都有。需要源码的百度网盘地址:…

    2022年7月7日
    26
  • 使用Arduino开发ESP32(06):Ethernet的使用(基于LAN8720)

    使用Arduino开发ESP32(06):Ethernet的使用(基于LAN8720)文章目录目的基本说明接线定义使用步骤常用方法说明使用演示数据通讯事件响应其他说明 PHY 地址时钟通讯应用总结目的 ESP32 除了可以使用无线网络外还可以通过外接 PHY 模块来使用有线网络 Ethernet 以太网 本篇将介绍相关内容 基本说明本篇中使用常用的 PHY 芯片 LAN8720 的模块来来进行有线网络使用演示 接线定义下面是 ESP32 与 LAN8720 间 RMIIPHY 的连接定义 用于以

    2026年3月19日
    3
  • 用Android Studio做一个超好玩的拼图游戏,附送超详细注释的源码

    用Android Studio做一个超好玩的拼图游戏,附送超详细注释的源码在这篇博客里面 我们就来开发一款简单的拼图游戏 这款拼图游戏就和我们小时候玩的游戏是一样的 这里面的涉及到的算法不多 可以很容易学会 这次的拼图游戏项目是一个非常好的 Android 实现案例 涉及到很多常用的控件和知识点 希望大家拿到源码后 能对照着教程和注释好好学习掌握

    2026年3月16日
    2
  • Python——模块和主函数调用

    Python——模块和主函数调用python module py Demo1 revokethedef print pow 3 3 Demo2 revokethefun frommathimpo print pow 3 3 Demo3 revokethesel path append common

    2026年3月26日
    1
  • Linux编辑文件命令汇总

    Linux编辑文件命令汇总创建文件命令 1 vi fileNameeg videmo txt 这种方式创建后会直接进入当前文件中 2 touch fileName eg touchdemo2 txt3 cat gt gt fileNameeg cat gt gt catDemo txt 使用 cat 创建文件时 以系统默认的文件属性作为新文件的属性 并接受键盘输入作为文件的内容 输入结束时按 Ctrl d 退出并保存文件 使用 cat fileName 命令查看文件内容 secmanager g

    2025年11月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号