足球
1.球、人、地面添加物理属性
(颜你自己应该有,也可以自己设置)
球、人、地面添加碰撞属性collider
球添加刚体属性rigibody 球添加反弹属性material
2.球、人添加运动属性(写代码)
我的做法是,人朝球跑(2.1),人和球很近时默认他踢球,球朝门移动,
2.1人朝球运动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class man : MonoBehaviour {//class的名字统一和文件名一样就行,不一定要用我的man
public GameObject ball;//球,要在外面指明gameobject是ball
Vector3 speed;
Vector3 direction;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
ansform.position-this.transform.position;//球的位置减去人的位置,得到运动的方向
direction.y=0;//垂直方向上不运动,这个变化量设置为0
speed=1.0f*direction/Vector3.Magnitude(direction);//direction/Vector3.Magnitude(dire
ction)是把向量direction变为单位向量,这里我随便设置人的速度为1,你也可以设置为其他的,一般的话看你设置的比例,球场有多大,求有多大,
this.transform.position += speed * Time.deltaTime;//Time.deltaTime为显示时这一帧与上一帧的时间间隔
}
}
2.2球运动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ball : MonoBehaviour {
// Use this for initialization
public GameObject man;
Vector3 distance,distance1;
Vector3 ballspeed;
public Vector3 Adoor, Bdoor;//A方球门,B方球门
void Start () {
}
// Update is called once per frame
void Update () {
distance = ansform.position - this.transform.position;
distance.y = 0;
unity 教程if(Vector3.Magnitude(distance)<2){//本来还要用个碰撞函数判断是否踢到球,但是为了简单点,当球与人距离很近,就设置为踢到了球,距离很近我设置为2,你也可以自己设置,自己设置
//距离很近时设定踢球进门
//本来要设置我方球员,对方球员,这里简单点,我这里就不分了,要分的话,球员添加标记tag,A方球员tag=A,B方球员tag=B,然后if(tag=A)踢哪else踢哪
//假设B方队员,踢A方球门
distance1=Adoor-this.transform.position;//A方球门位置,外面输入,减去球的位置为球运动方向
ballspeed = 1.0f * distance1 / Vector3.Magnitude(distance1);//同人运动
this.transform.position += ballspeed * Time.deltaTime;
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论