嘿伙计,所以我正在制作我的第一个应用程序。我知道这是一个非常复杂的问题,但我很难跟踪示例,因为脚本代码不同。我正在制作2D平台跑步者。首先,我创建了平台,环境以及大多数(如果不是全部)物理。此时的玩家只是一个圆圈(只是一个占位符)。圆圈可以从左向右移动并跳跃。我现在已经创建了一个真正的玩家精灵,并为步行,跳跃和闲置制作了动画。如何将新的精灵动画应用于当前的圆占位符以及脚本?我的下一步是进入动画师并开始进行转换我猜。我只是不确定如何将动画添加到我当前的脚本。我知道这将是一个挑战,如果您需要任何其他信息,请告诉我。非常感谢你们。
这是我的" Controls.cs"目前已附加到我的圈子播放器/占位符。我的CheckGround附在他身上。其他一切都与他正在跳跃的平台有关,我认为不会改变。再一次,我有一个精灵走路,跳跃和空闲,我想取代当前的圈子/占位符。我需要在按下左箭头和右箭头时进行步行动画,在按下跳跃按钮时播放泵动画,在播放器静止不动时播放空闲动画。再次,非常感谢你们!
using UnityEngine;
using System.Collections;
public class Controls : MonoBehaviour
{
public Rigidbody2D rb;
public float movespeed;
public float jumpheight;
public bool moveright;
public bool moveleft;
public bool jump;
public Transform groundCheck;
public float groundCheckRadius;
public LayerMask whatIsGround;
private bool onGround;
// Use this for initialization
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
onGround = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.LeftArrow))
{
rb.velocity = new Vector2(-movespeed, rb.velocity.y);
}
if (Input.GetKey(KeyCode.RightArrow))
{
rb.velocity = new Vector2(movespeed, rb.velocity.y);
}
if (Input.GetKey(KeyCode.Space))
{
if (onGround)
{
rb.velocity = new Vector2(rb.velocity.x, jumpheight);
}
}
if (jump)
{
if (onGround)
{
rb.velocity = new Vector2(rb.velocity.x, jumpheight);
}
jump = false;
}
if (moveright)
{
rb.velocity = new Vector2(movespeed, rb.velocity.y);
}
if (moveleft)
{
rb.velocity = new Vector2(-movespeed, rb.velocity.y);
}
}
}
答案 0 :(得分:0)
了解Animation Controller。创建它之后,您可以从游戏对象中抓取Animator,如transform.GetComponent<Animator>()
稍后您可以混合动画或只是播放它们。 Unity甚至可以为输入动画制作输入条件,所以老实说你甚至不需要输入太多的代码。
答案 1 :(得分:0)
绝对使用动画控制器 看看这个视频 - 我现在正在关注这个教程。