本人第一个完整Demo,加里奥类似。难点全部记录。2/1 未重做。

Character Controller这个组件有一部分rigibody作用,和碰撞体作用。
你做的游戏有2个种类,敌人,主角,可以做一个公共的类来存放两者的数据。把相似行为写成方法封装到父类中。
1、角色移动方法:
    cc.Move(里面要加time.deltatime),cc.SimpleMove()2种,后者是有物理重力在里面,前者没有。
    但是你会发现用cc.SimpleMove()会很别扭,这里有个设置Y轴跳跃力的经典方法《pendingVelocity.y += cc.isGrounded ? 0 : Physics.gravity.y * 10 * Time.deltaTime;》这样会跳的很舒服。
不要在公共类里用Update,否则会失效,玩家的输入输出不会更新。
cc.isGrounded可以做地面检测,检测后跳跃
用rig移动的主要思想  定义一个向量Vector3 pendingVelocity;分别设置他的X,Y,Z方向的速度大小。
旋转需要一个标志位rotateComplete,为后面的搬箱子做铺垫,如果箱子在你没有转向完全就抬起,箱子方向就会大乱,导致无法一直搬运了,也就是无法抬起了。
 

 public void Rotate(Vector3 lookDirect, float turnSpeed)//旋转技巧。
    {
        rotateComplete = false;
        Quaternion faceToQuater = Quaternion.LookRotation(lookDirect);
        Quaternion slerp = Quaternion.Slerp(transform.rotation, faceToQuater, turnSpeed * Time.deltaTime);
        if(slerp == faceToQuater)
        {
            rotateComplete = true;
        }
        transform.rotation = slerp;
    }

 public void AttackCheck()//攻击检测。
    {
        RaycastHit hit;
        if(Physics.Raycast(transform.position,Vector3.down,out hit ,0.2f))
        {
            if(hit.transform.GetComponent<Character>() && hit.transform!=transform)
            {
                hit.transform.GetComponent<Character>().TakeDamage(this, damage);
            }
        }
    }
}

void LateUpdate ()//相机跟随玩家移动不跟随玩家的Y移动。相机一般是在Late里
 {
        if (!player) return;
        offset = new Vector3(player.position.x, 1, player.position.z - 8);
        transform.position = offset;
  }
//动画状态设计技巧。
        anim.SetFloat("forward", cc.velocity.magnitude);
        anim.SetBool("isground", cc.isGrounded);
        anim.SetBool("grab", grabObject ? true : false);

public void GrabCheck() //抓取检测
    {
        if(grabObject !=null && rotateComplete == true)
        {
            grabObject.GetComponent<Rigidbody>().isKinematic = false;
            grabObject.parent =null;          
            grabObject = null;
        }
        else if (grabObject == null)
        {
            float dis = cc.radius;
            RaycastHit hit;
            if(Physics.Raycast(transform.position+new Vector3(0,dis,0),transform.forward,out hit ,dis+1))
            {
                if(hit.transform.tag == "GrabBox")
                {
                    grabObject = hit.transform;
                    grabObject.SetParent(grabSocket);
                    grabObject.localPosition = Vector3.zero;
                    grabObject.localRotation = Quaternion.identity;
                    grabObject.GetComponent<Rigidbody>().isKinematic = true;
                }
            }
        }


    }


//这个就比较强大了,模拟AI,厉害。
    private float lastCheckStateTime = 0;
    private float simulateH;
    private  bool simulateJump;
    private int simulateFrequency = 2;

        if(Time.time > lastCheckStateTime+ simulateFrequency)
        {
            lastCheckStateTime = Time.time;
            simulateH = Random.Range(-1, 2);
            simulateJump = Random.Range(0, 2) == 1 ? true : false;
        }

 

基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值