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);
}

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • jquery动画效果实例_动画js

    jquery动画效果实例_动画js文章目录JS动画实现概述平滑动画无缝连续滚动特效轮播图轮播图淡入淡出效果JS动画实现概述在CSS3中可以通过transition过渡属性可以实现动画JS可以利用CSS3中的transition属性实现元素动画平滑动画利用CSStransition属性实现平滑动画效果<button>开始动画</button><divid=”box”></div><script>varbtn=document.queryS

    2022年10月16日
  • 基于深度学习的视频识别方法概览

    基于深度学习的视频识别方法概览来源:阿里云安全 作者:深度学习在最近十来年特别火,几乎是带动AI浪潮的最大贡献者。互联网视频在最近几年也特别火,短视频、视频直播等各种新型UGC模式牢牢抓住了用户的消费心里,成为互联网吸金的又一利器。当这两个火碰在一起,会产生什么样的化学反应呢?  不说具体的技术,先上一张福利图,该图展示了机器对一个视频的认知效果。其总红色的字表示objects,蓝色的字表示scenes

  • 数据标准化/归一化normalization

    数据标准化/归一化normalizationhttp://blog.csdn.net/pipisorry/article/details/52247379这里主要讲连续型特征归一化的常用方法。连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。离散数据处理参考[数据预处理:独热编码(One-HotEncoding)]。基础知识参考:[均值、方差与协方差矩阵][…

  • php连接ldap服务器,使用PHP连接LDAP服务器[通俗易懂]

    php连接ldap服务器,使用PHP连接LDAP服务器[通俗易懂]LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。简单说来,LD…

  • CTK Plugin Framework 介绍「建议收藏」

    CTK Plugin Framework 介绍「建议收藏」CTKPluginFramework基本原理1 CTKPluginFramework是什么&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CTKPluginFramework技术是面向C++的动态模型系统。该系统允许插件之间的松散耦合,并且提供了设计良好的方式来进行功能和数据的交互。此外,它没有预先对插件施加限制,这样就可以很…

  • JAVA | StringUtils中 isNotEmpty 和 isNotBlank的区别[通俗易懂]

    JAVA | StringUtils中 isNotEmpty 和 isNotBlank的区别[通俗易懂]isNotEmpty和isNotBlank的区别

发表回复

您的电子邮箱地址不会被公开。

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