怎么让百度快速收录网站,网站建设语,专业网站优化公司排名,中国建设银行官网个人登录添加组件
给PlayGame和EnemyObject添加组件BoxCollider 2D碰撞器#xff0c;不用修改参数 给PlayGame添加组件Rigibody 2D 设置数据 添加EnemyObject#xff0c;属性如下 Edit-project setting-Physics 2D 将 y的值改为0 给playerObject添加标签 新建层 将PlayerObj…添加组件
给PlayGame和EnemyObject添加组件BoxCollider 2D碰撞器不用修改参数 给PlayGame添加组件Rigibody 2D 设置数据 添加EnemyObject属性如下 Edit-project setting-Physics 2D 将 y的值改为0 给playerObject添加标签 新建层 将PlayerObject设置为Bloking,EnemyObject也是 在Sprite Renderer添加sorting Layer 保存后给PlayerObject和EnemyObject设置 预制件
预制件是用来存储一个游戏对象的所有组件属性和子对象这样就成为了一个可重复使用的资源文件。当需要多次重复使用这个游戏对象时便可以使用预制件来创建。举一个简单的例子我们会在游戏世界中创建同一种怪物模型的实例显然我们不可能将怪物模型一个个的拖拽到游戏世界中并且这些怪物会死亡消失也会重新刷新。因此合理的解决方案应该是每一种怪物都应该是一个预制体然后我们可以通过预制体来创建不同的怪物实例这就是预制件的优势。当然预制件更重要的是对游戏对象的“封装”预制体不仅仅是网格模型同时还可以包含各种功能组件以及脚本这样的预制件就能承载更多的内容。
在Assets下创建Prefabs文件将PlayerObject拖到Prefabs里面enemyObject也是同样操作
先就可以将Hierarchy里面的playObject和EnemyObject安全的删除了 组件逻辑
把PlayerObject预制件拖到Inspector面板中 新建文件夹Scripts 将MovementController脚本拖进去双击打开编辑 编写代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MovementController : MonoBehaviour
{// Start is called before the first frame updatepublic float movementSpeed 3.0f;Vector2 movement new Vector2();Rigidbody2D rb2D;void Start(){rb2D GetComponentRigidbody2D();}// Update is called once per framevoid Update(){}//unity引擎以固定时间调用private void FixedUpdate(){//将返回表示水平输入的原始值。如果玩家按下左箭头或 A 键则返回 -1如果按下右箭头或 D 键则返回 1如果没有按下任何键则返回 0。movement.x Input.GetAxisRaw(Horizontal);movement.y Input.GetAxisRaw(Vertical);//标准化向量转换为单位向量长度为1即保留其方向但将其长度缩放为1。movement.Normalize();rb2D.velocity movement * movementSpeed;}
}
将MovementController移动到PlayerObject的Inspector 点击play现在按电脑上的W,A,S,D即可移到玩家