Unity2D学习笔记Day2:脚本控制⾓⾊移动和跳跃学习资源:B站 M_Studio《Unity教程2D⼊门》
Unity Assets:Sunnyland
Day2
1. 脚本控制⾓⾊左右移动
查看Input信息
Edit -> Project settings -> Input
查看横向移动的按键(在这⾥也可以更改原有的按键设置)
对Horizontal的理解:
Horizontal 这个⽔平轴其实就是X轴,也就是键盘上的AD键或⽅向箭头,当静⽌时为0,当按下A键时这个数值减⼩,返回⼀个⼩于0的数值,同理,D键为⼤于0的数值;物体就在X轴⽅向⽔平移动。
(经过控制台测试,发现horizontal并不只是返回-1,0和1,应该是根据按键的时间,逐渐增⼤或减⼩数值,达到1时不再增加)
如果只想要-1,0和1,应选择 Input.GetAxisRaw() 函数(下⾯会⽤到)
using;
using;
using;
public class PlayerController : MonoBehaviour
{
public float speed =10;
private Rigidbody2D rb;
// Start is called before the first frame update
void Start()
{
rb =GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
Movement();
}
void Movement()
{
float horizontalmove = Input.GetAxis("Horizontal");
if(horizontalmove!=0)
{
rb.velocity =new Vector2(speed * horizontalmove, rb.velocity.y);
}
}
}
问题:移动过程中Player会滚?
Rigidbody锁定z轴
调整参数⼩技巧:
在试玩过程中,调到⼀个合适的参数后,如果结束试玩,参数⼜会回到进⼊试玩前的状态,如何保留呢?调整完,选择
结束试玩后,选择
2. 移动时调整⾓⾊⽅向
调整⾓⾊⽅向不需要换图⽚,只要将Scale的x改为-1即可!
void Movement()
{
float horizontalmove = Input.GetAxis("Horizontal");
float direction = Input.GetAxisRaw("Horizontal");
Debug.Log("horizontalmove: "+ horizontalmove);
if(horizontalmove!=0)
unity 教程{
rb.velocity =new Vector2(speed * horizontalmove, rb.velocity.y);
}
if(direction!=0)
{
transform.localScale =new Vector3(direction,1,1);
}
}
3. 适配不同电脑
根据每秒钟的实际帧数来平滑运动效果
1. 使⽤FixUpdate
void FixedUpdate()
{
Movement();
}
2. 使⽤Time.deltatime
它是⼀个很⼩的数,因此speed要相应的增⼤。
public float speed =400;
rb.velocity =new Vector2(speed * horizontalmove * Time.deltaTime, rb.velocity.y);
Time.deltatime的理解
有空再补充吧
4. 脚本控制⾓⾊跳跃
注意:Unity中,跳跃的默认input是空格,可更改。
在movement函数中添加如下代码:
if(Input.GetButtonDown("Jump"))
{
rb.velocity =new Vector2(rb.velocity.x, jumpforce * Time.deltaTime);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论