Unity学习草稿

本文介绍了Unity中的核心概念,如预设体、用户输入、射线检测、物理材质、碰撞事件以及常用函数。讲解了如何创建和使用预设体,以及如何通过用户输入控制游戏对象。还涉及了射线检测在碰撞检测中的应用,物理材质的设置,碰撞事件的处理,以及Rigidbody组件在模拟真实物理效果中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预设体

预设体能够使游戏对象和资源重复使用
相同的游戏对象可以使用同一个预设体来创建
对预设体进行修改后,所有的同一预设体游戏对象都会相应改变

要区分 预设体 与 预设体游戏对象!!!

在create栏把游戏对象拖到project栏即可创建预设体
预设体扩展名为.prefab

然后就可以把预设体拖到场景中创建预设体游戏对象

对预设体游戏对象可以单个的修改

//常用
用脚本在游戏时动态创建创建预设体游戏对象
先在create创建一个空gameobject
为此对象添加脚本:
public Gameobject playerPrefab;用来记录需要作为预设体的对象


fun里:
Instantiate(playerPrefab);//但是这种方法无法控制创建的位置


Vector3 pos = new Vector3();
pos.y = 0.5f;//让对象在地面之上
pos.x = Random.Range(-5f,5f);//使用随机数 -5.0~5.0之间
pos.z = Random.Range(-5f,5f);


float angel = Random.Range(0f,360f);//角度随机


Instantiate(playerPrefab,pos,Quatenion.AngelAxis(angel,Vector.up));
预设体   位置   角度
创建一个对象在pos位置,旋转角度为正y轴angel度
Instantiate返回值为Object,可以用转换为gameobject:
Gameobject g = Instantiate(...) as Gameobject;

p.AddComponent<TestSP>();//为其添加脚本


Class Inptu
用于获取用户事件,如按键、鼠标

一般写在Update里
每帧监听用户事件

if(Input.GetKeyDown(KeyCode.W));
当用户按下W时返回true,否则返回false,KeyCode.W是枚举
因为是在Update中,所以是每帧检查用户是否按下W
if(Input.GetKeyUp(KeyCode.Alpha1));
按下并松开 1 时
if(Input.GetKey(KeyCode.Q));
持续按下按钮时持续触发

但是应该使用:
if(Input.GetButton("Jump"))...

Input.GetMouseButtonDown(0);
参数0监听鼠标左键按下,1监听鼠标右键
同理GetMouseButtonUp与GetMouseButton对应GetKeyUp与GetKey

Input.GetMouseButton(0);单击鼠标左键,1为右键 2...

获取某个坐标轴上的一个方向
float h = Input.GetAxis("Horizontal");//当按下a时返回-1,d返回1
float v = Input.GetAxis("Vertical");//w、s同上



射线

虚拟射线能够检测所有碰撞到的物体
使用Physics类的Raycast方法实现射线碰撞检测功能

Vector3 target;//目标点
bool isOverMove=true;//是否到达目标
RaycastHit hitinfo = new RaycastHit();

punlic float speed;//速度

void Update(){
if(Input.GetMouseButtonDown(0)){
//创建一条从摄像机开始经过鼠标当前位置的射线
Ray ray = Camera.main.ScreenPoingToRay(Input.GetMousePosition);
//发射射线 是否发射碰撞 
if(Physics.Raycast(ray,out hitinfo)){//保存碰撞点信息到hitinfo
//Physics.RaycastAll()会返回射线经过的所有游戏对象
if(hitinfo.collider.name = "Plane"){//是否与地面发生碰撞
target=hitinfo;
target.y=0.5f;//因为碰撞点是地面,所以y为0
isOverMove=false;
}
}
}
//移动对象
MoveTo(target);
}

void MoveTo(Vector3 target){//移动
if(!isOverMove)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值