unity-物体的基本操作笔记
基础代码
公共属性
private Rigidbody2D m_body2d;
[SerializeField] float m_speed = 4.0f;
[SerializeField] float m_jumpForce = 7.5f;
左右移动
// Update is called once per frame
void Update()
{
float inputX = Input.GetAxis("Horizontal");
//切换方向
if (inputX > 0)
transform.localScale = new Vector3(-1.0f, 1.0f, 1.0f);
else if (inputX < 0)
transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
//移动
m_body2d.velocity = new Vector2(inputX * m_speed, m_body2d.velocity.y);
}
跳
void Update()
{
if (Input.GetKeyDown("space"))
{
m_body2d.velocity = new Vector2(m_body2d.velocity.x, m_jumpForce);
}
跑
当前遇到一个问题:
- 就是跑的时候,过渡时间太长,导致在启动的时候物体在滑行,然后再跑?
动画
从Sprite图集中生产Animation
- 选中图集
- 选中需要的单个或者多个图片
- 按住ctr键向hierarchy视图拖动
- 命名anim文件
- 保存
如何预览.anim文件
- 先选中anim文件
- 将hierarchy中的要预览的物体拖入到anim的信息面板中的预览窗口
- 点击开始,即可预览
物体动画之间的切换
在Animator中,动画和动画之间的切换关系,如idle到fight,fight也可以到idle;当前我们需要的是点击右键实现攻击,然后在切换到idle。流程如下
- 在Animator窗口中创建idle和fight节点
- 从idle过渡到fight,设置过渡条件
- (注意)从fight过渡到idle,不要设置过渡条件
总结,如果没有第三点,那么就是执行fight后就定住了
实现物体近身武器攻击怪物
主要是在物体挥动武器的时候产生一个触发器,如果触发到怪物就产生事件
具体实现步骤
-
在物体下面创建一个空的子对象
-
给子对象添加polygon2d对象,调整挥动武器的大致轮廓和方向
-
编辑挥动武器的动画
在Animation中编辑挥动武器的帧,选择Add Property > Attack Area > Polygon Collider 2D > Enabled,并在挥动武器的帧上勾选复选框,此时预览窗口就可以看到动画挥动武器的时候会出现这个触发器
-
敌人物体挂上rigidbody2d,设置gravaity scale为0,freeze position锁住x,目的是为了碰撞的时候敌人不会被退走,同时勾选is Trigger
-
attackArea物体上挂一个脚本,脚本内容
using System.Collections;
using System.Collections.Generic;
using UnityEditor.UI;
using UnityEngine;
using UnityEngine.UI;
public class swipeWeapon : MonoBehaviour
{
private float allBlood = 10f;
private