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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常数变易法的原理解释_微分方程常数变易法

    常数变易法的原理解释_微分方程常数变易法高数看到常数变易法,不懂为什么要把C变成u,看了篇文章,感觉懂了转载自http://www.cnblogs.com/lookof/archive/2009/01/06/1370065.html注:本方法是对崔士襄教授写的《“常数变易法”来历的探讨》论文的解释。思路并非本人原创。特此注明。背景详见本人前一篇博文。      我们来看下面的式子:

    2022年10月24日
  • LAMP配置-nginx.conf「建议收藏」

    LAMP配置-nginx.conf「建议收藏」#usernobody;worker_processes8;worker_cpu_affinity0000000100000010000001000000100000010000001000000100000010000000;error_loglogs/error.logcrit;pidlogs/nginx.pid;worker_rlimit_nofile65535;events{useepoll;worker_c.

    2022年6月5日
  • 以下哪些字符可以用于定义Python标识符_if可以作为用户标识符吗

    以下哪些字符可以用于定义Python标识符_if可以作为用户标识符吗1.有效的Python标识符规则:(1)长度是任意长度;(2)标识符不能具有相同的名称作为关键词;(3)在Python的版本,用一个ASCII字母或下划线标识符开始,并且可以紧随其后的是字母,数字,下划线;在Python中,标识符ASCII字母、下划线和大多数非英语语言字母,只要用Unicode编码的字母可以作为主要人物,和随后的字符可以是任何主角,或任何的字符进行技术改造,包括任何在Unico…

    2022年9月10日
  • matlab怎么保存图片_如何保存matlab文件

    matlab怎么保存图片_如何保存matlab文件matlab中保存图片的方法一、一种是出来图形窗口后手动保存(这儿又可以分两种):1直接从菜单保存,有fig,eps,jpeg,gif,png,bmp等格式。2edit——〉copyfigure,再粘贴到其他程序。二、另一种是用命令直接保存(这里也有两种):1用saveas命令保存图片。saveas的三个参数:(1)图形句柄,如果图形窗口标题栏是“Figure3”,则句柄就是3….

    2022年9月3日
  • init是啥意思_init 0到6的意思

    init是啥意思_init 0到6的意思1.内核启动问题2.解决方案2.1ramdisk(比如initrd)2.2tmpfs(比如initramfs)2.3ramdiskvsramfs2.4临时文件系统2.4.1观察tmpfs2.4.2Initramfs2.4.3查看initramfs2.4.4创建initramfs2.5Linux系统中的initramfs2.6cpio归档文件3.高级用户3.1制…

    2022年8月11日
  • vlan的原理和作用_生态因子作用的基本原理

    vlan的原理和作用_生态因子作用的基本原理相关名词:VirtualLocalAreaNetwork—VLAN、VirtualPrivateNetwork—VPN、VirtualRedundancyProtocol—VRRP等。一。VLAN的作用1.把一个广播帧所能到达的整个范围称为二层广播域,简称广播域。显然,一个交换网络其实就是一个广播域。在该网络中,假定PC0向PC10发送一个单播帧Y…

    2022年8月10日

发表回复

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

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