Unity官方教程—space shooter练习日记之脚色移动

         从官方下载下来的资源,代码通过自主视频获得,还是得感谢下58

        首先是传统的虚拟轴的使用        float moveHorizontal = Input.GetAxis("Horizontal");

                                                                float moveVertical = Input.GetAxis("Vertical");

这里的Horizontal以及Vertical可以在unity中的Edit---project seeting ----Input找到,不止是有预设的xyz轴变化,还有Jump,同时支持自我定义。

接下来的方法有很多种,这是本次试用的 Vector3 movement = new vector3(moveHorizontal , 0.0f , move Vertical);

                                                                         GetCompent<Rigdibody>().velocity = movement*speed;

上面的这些已经有过多次使用经历,而接下来的才是今天最大的收获

[System.Serializable]
    public class Bondary
    {
        //定义边界值
        public float xMin;
        public float xMax;
        public float zMin;
        public float yMax;

}

public Bondary bondayr

这里将已经定义好的公共变量x和z轴的极限定义为了类,就使用来说复杂程度增高了,但其整洁的写法使得它不得不被使用,便于检查,整理。


最后一步,使得玩家在没有物体阻拦的情况下依然不会超过边界

Getcompent<Rigidbody>().position = new Vector3(Mathf.Clamp(Getcompent<Rigidbody>().position.x,bondary.xMin,bondary.xMax) , 0.0f, Math.Clamp(Getcompent<Rigidbody>().position.z , bondary.zMin , bondary.zMax));

这里的书写量较大,为纯手打,建议以官方视频为准

最后说一点,注意在unity中对于max以及min值的设置,如果正负错误会出现鬼畜的情况。


祝我们成功

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour {
    [System.Serializable]
    public class Bondary
    {
        //定义边界值
        public float xMin;
        public float xMax;
        public float zMin;
        public float yMax;
    }
    public float speed;
    public Bondary bondary;
    // Use this for initialization
    void FixedStart () {
		
	}
	
	// Update is called once per frame
	void Update () {
        //角色移动
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");
        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

       GetComponent<Rigidbody>().velocity = movement * speed;
        //使玩家不超越边界值
       GetComponent<Rigidbody>().position = new Vector3(Mathf.Clamp(GetComponent<Rigidbody>().position.x,bondary.xMin,bondary.xMax), 0.0f, 
                                                         Mathf.Clamp(GetComponent<Rigidbody>().position.z,bondary.zMin,bondary.yMax));

	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值