unity入门——实现一个简单的跑酷游戏(人物控制)

unity入门——实现一个简单的跑酷游戏

场景搭建

将人物放置于世界坐标的(0,0.1,0),初始道路放置于人物脚下,坐标设置为(0,0,0),水面初始位置设置为(0,-2,-100),可以自行调整,道路与人物在y轴上不要 重合即可,当然这些操作也可以放在Awake函数中动态进行,但直接摆放显然是最快捷的方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这时候点击运行游戏大概率什么也看不到,我们需要将摄像机放置于人物面前,按照如下设置其transform组件的属性。在这里插入图片描述
这时点击运行会看到如下画面:在这里插入图片描述
如果上一篇的动画状态机设置正确的话,人物应该会处于待机动画,而需要这个动画循环的话,只需要将该动画的Loop Time和其子属性Loop Pose勾选即可,如下。在这里插入图片描述
那么,到现在场景的摆放基本完成,ui方面会在下篇说明。

人物控制

一款简单的跑酷游戏的人物需要有前进,跳跃,下滑和左右移动的动作,而人物在前进的同时需要摄像头跟随,这里就需要脚本实现了。

/*CameraPosition.cs,挂载于main camera*/
public GameObject character;
public float beh=4;//相机距离
public float ups=7;//相机高度
void LateUpdate()
    {
   
        if (start)
        {
   
            transform.position = character.transform.position - Vector3.forward * beh + Vector3.up * ups;
            transform.LookAt(character.transform);
        }
    }

正如第一篇所说,相机的跟随需要 在人物位置改变之后,因此在LateUpdate中进行。
人物进入游戏后设置为奔跑状态。

public Animator playerAnimator;
public int framerate=30;
CharacterController ctrl;	
bool isjumping = false;
bool issliding = false;
bool ismoving = false;
bool isleft = false;
bool isright = false;
public float speed = 5f;
public GameObject hard;//难度
public Vector2 screenaixY = new Vector2(0, 1);
public Vector2 screenaixX = new Vector2(1, 0);
Vector2 startpos;
Vector2 endpos;
bool isinput = false;
float angle;
void Start()
    {
   
        Transform pos;
        pos=GetComponent<Transform>();
        pos.position = new Vector3(0, 0.1f, 0);
        ctrl = GetComponent<CharacterController>();
        playerAnimator = GetComponent<Animator>();
        playerAnimator.SetBool("MOVE", true);
    }

接下来在Update函数中完成其他动作及其音效的触发。

#if UNITY_STANDALONE_WIN//如果是windows平台
        if (Input.GetKeyDown(KeyCode.UpArrow) && (isjumping == false) && (issliding == false))
        {
   
            GetComponent<AudioSource>().clip = Resources.Load<AudioClip>("jump");
            GetComponent<AudioSource>().PlayOneShot(GetComponent<AudioSource>().clip);
            isjumping = true;
            playerAnimator.SetBool("ISJUMP", true);
        }
        if (Input.GetKeyDown(KeyCode.DownArrow) && (isjumping == false) && (issliding == false))
        {
   
            GetComponent<AudioSource>().clip = Resources.Load<AudioClip>("slide");
            GetComponent<AudioSource>().PlayOneShot(GetComponent<AudioSource>().clip);
            issliding = true;
            playerAnimator.SetBool("ISSLIDE", true);
        }


        if (Input.GetKeyDown(KeyCode.LeftArrow) && (!isright) && (!isleft))
        {
   
            isleft = true;
            StartCoroutine(turnleft());

        }
        /*while(transform.position.x >= -f)
         transform.position += new Vector3(-1, 0, 0)*Time.deltaTime*5;*/
        if (Input.GetKeyDown(KeyCode.RightArrow) && (!isleft) && (!isright
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值