using SystemCollections;
public class Key : MonoBehaviour {
Animator DoorAni;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
RaycastHit hit;
Ray ray = CameramainScreenPointToRay(InputmousePosition);
if (InputGetMouseButtonDown(0) && PhysicsRaycast(ray, out hit))
{
DoorAniSetBool("Door",true);
}
}
}
其中DoorAni是你门Door的动画状态机,这个是前提是你得有这个门开的AnimtionRaycastHit hit, 100mousePosition);/
if (Physics,那么就是,如果是指镜头顺延方向(也就是游戏画面钻向屏幕里的方向)0f)) {
ScreenPointToRay(Input, out hitmainRaycast(ray:
Ray ray = Camera那要看你怎么理解“前”这个方向了; 对射线相交点 hit 的处理
}
这个就是从屏幕向鼠标点击点的方向向前的射线这样肯定不会一直跟随,因为你的navdestination = Enemytransformposition; 只有在你外层的几个if成立的时候执行一遍,这样怪物离开之后destination 不会获取怪物新的position,试试这样,在你的if(hittransformtag == "Enemy")成立的时候设置一个布尔变量flag = true;不成立flag = false(默认是false),然后再这几个if的外面加上if(flag){navdestination = Enemytransformposition;},能明白吗?不用我写一遍代码了吧!if(InputGetMouseButtonDown(0)){
var ray:Ray = camScreenPointToRay(InputmousePosition);
var hit:RaycastHit;
if(PhysicsRaycast(ray,hit)){
if(hittransformname == gameObjecttransformname){
//自己逻辑
renderermaterialmainTexture = texture;
texturePlay ();
}
}
}
这样改其他两个就好了,不过前提是你这个脚本要放到点击的物体上,如果不放到点击的物体上,就需要获取点击的物体,然后f(hittransformname == gameObjecttransformname)换成f(hittransformname == objtransformname),obj就是你获取的点击的物体。Unity3D鼠标拾取物体可以通过射线的方式获取鼠标坐标 通过物理将物体名字输出进行 *** 作。
function Update ()
{
if (InputGetMouseButton (0))
{
var ray = CameramainScreenPointToRay (InputmousePosition);
var hit : RaycastHit;
if (PhysicsRaycast (ray, hit))
{
DebugDrawLine (rayorigin, hitpoint);
print(hitcollidergameObjectname);
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)